好吧,所以我环顾了一下StackOverflow,偶然发现了一种通过分隔符拆分C++的方法。
到目前为止,我已经看了这些,但我仍然不明白
- 使用字符串分隔符(标准C++(在C++中解析(拆分(字符串
- https://www.oreilly.com/library/view/c-cookbook/0596007612/ch04s07.html
- C++通过分隔符拆分字符串并在结果中保留分隔符
- 将C++字符串拆分为两个整数,这两个整数由":">
根据我的理解,我需要使用一个分隔符,使用一个包含分隔符的变量,然后使用substr()
方法/函数,但我不了解全部内容。
例如,我看到了一个引用pos
和npos
的例子,我不明白。我的另一个问题是,我不知道如何使用具有相同分隔符的多个副本的字符串。
我的目标是采用这样的日期:"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
转换为一个整数变量。