使用 getline 函数解析 C++ 中的字符串

using getline function to parse a string in c++

本文关键字:字符串 C++ getline 函数 使用      更新时间:2023-10-16

我一直在做一个项目,该项目采用日期格式的用户输入,例如"05/10/1996",然后将其解析为三个整数。一个表示月,一个表示日,一个用于年。我正在查看函数getline(),但不太确定如何使用它一次解析多个对象。有没有办法通过 while 循环来做到这一点?如果是这样,我将不胜感激一些帮助,因为我有点坚持下去。

这是其中一种方法 -

void split(std::vector<std::string> &tokens, const std::string &text, char sep) {
    int start = 0, end = 0;
    while ((end = text.find(sep, start)) != std::string::npos) {
        tokens.push_back(text.substr(start, end - start));
        start = end + 1;
    }
    tokens.push_back(text.substr(start));
}

用法-

int main(int argc, const char * argv[]) {
    std::vector<std::string> tokens;
    std::string *text = new std::string("05/10/1996");
    split(tokens, *text, '/');
    int first = atoi(tokens[0].c_str());
    int second = atoi(tokens[1].c_str());
    int third = atoi(tokens[2].c_str());
    std::cout<<first<<std::endl;
    std::cout<<second<<std::endl;
    std::cout<<third<<std::endl;
    while (true);
    return 0;
}

使用整数变量在控制台上输出它 -

5101996

有关高级解决方案/讨论 - 请参阅此问题。

int m,d,y;
char dummy;
cin >> m >> dummy >> d >> dummy >> y;