【问题标题】:strtok is using wrong delimiter (space as well as ",")strtok 使用了错误的分隔符(空格和“,”)
【发布时间】:2012-06-03 23:46:04
【问题描述】:

有没有办法让 strtok() 不将空格解释为分隔符? 我正在读取 .csv 文件,我的代码有:

ifstream inf("file.csv");
char *n, *a, *b;
char n1[80], a1[80], b1[80], temp[80];
inf >> temp;
n = strtok(temp, ",");
strcpy(n1, n);
a = strtok(NULL, ",");
strcpy(a1, a);
b = strtok(NULL, ",");
strcpy(b1, b);
cout << a1 << " " << b1 << endl;

文件内容:

123,San Francisco, Los Angeles

我认为 strtok 将空格解释为 '\n' 但我不知道如何忽略它。 我尝试输入 inf.ignore(' ') 但不起作用并给了我一些随机值。但是,如果我将文件更改为 123,San_Francisco, Los_Angeles 然后程序工作。 我怎么能忽略空格?

【问题讨论】:

    标签: c++ ifstream strtok


    【解决方案1】:

    不要责怪strtok,它的ifstream 在找到空格 字符时会停止提取。如果您想阅读整行,您应该使用getline() 变体之一。

    【讨论】:

    • 同意。如果您正在使用 c++ 并且作业是关于阅读 .csv 而不是关于 strtok 函数,那么使用 getline 并使用 temp.find_first_of 或 temp.find_first_not_of。
    • 如果您在 * 上输入评论并按下回车键,您将度过一段糟糕的时光。 :)
    • 问题是我们必须你strtok。它并没有说不能使用 getline,所以我可能会使用它。
    最近更新 更多