使用分隔符拆分C++字符串



好吧,所以我环顾了一下StackOverflow,偶然发现了一种通过分隔符拆分C++的方法。

到目前为止,我已经看了这些,但我仍然不明白

  • 使用字符串分隔符(标准C++(在C++中解析(拆分(字符串
  • https://www.oreilly.com/library/view/c-cookbook/0596007612/ch04s07.html
  • C++通过分隔符拆分字符串并在结果中保留分隔符
  • 将C++字符串拆分为两个整数,这两个整数由":">

根据我的理解,我需要使用一个分隔符,使用一个包含分隔符的变量,然后使用substr()方法/函数,但我不了解全部内容。

例如,我看到了一个引用posnpos的例子,我不明白。我的另一个问题是,我不知道如何使用具有相同分隔符的多个副本的字符串。

我的目标是采用这样的日期:"29/01/2022 • 05:25:01"将其拆分为日期和时间的结构,例如:

struct Date
{
int day;           //Integer for days
int month;         //Integer for months
int year;          //Integer for years
};
struct Time 
{
int hour;           //Integer for hour of drop
int minute;         //Integer for minute of drop
int second;         //Integer for second of drop
int milisecond;     //Integer for milisecond of drop
};

我也看过https://www.cplusplus.com/reference/,但是我想将其拆分,以便它们存储在自己的变量中,例如:

string example
{
struct Date D;
struct Time T;
D.Day = 29;
D.Month = 01;
D.Year = 2022;
T.Hour = 5;
T.Minute = 25;
T.Second = 01;
}

有人能用更简单的方式向我解释吗,或者给我一个更容易解释的来源?我的主要问题是不理解某些单词。

任何帮助都很感激,我真的在努力学习,但我还不太了解这些科目。

让我们一步一步走,从日期开始:

29/01/2022  -- Day, Month, Year.  

给定以下内容:

unsigned int day = 0u;
std::cin >> day;

整数的输入跳过空白,直到第一个数字字符(对于第一个数字角色,还包括"+"one_answers"-"(。提取操作员不断读取字符,构建数字,直到达到非数字字符:

2->白天9->白天

下一个字符是"/",它不是数字字符,因此提取运算符返回数字29

此上下文中的字符"/"被称为分隔符,因为它将日期字段与月份字段分隔开
由于它是一个字符,因此必须使用字符变量读取:

char delimiter = '';  
std::cin >> delimiter;

现在,分隔符已不在缓冲区中。您可以检查分隔符变量的内容或继续。

读取月份类似:

unsigned int month = 0U;
std::cin >> month;

编辑1:分隔符和子字符串
您可以使用分隔符将月份提取为字符串:

std::string month_as_text;
std::getline(std::cin, month_as_text, '/');

上面的getline函数从std::cin读取字符,放入字符串month_as_text中,直到找到分隔符字符'/'。然后可以将month_as_text转换为一个整数变量。

相关内容

  • 没有找到相关文章

最新更新