我正在尝试从文本文件中读取数据并根据引号拆分读取行。例如
"Hi how" "are you" "thanks"
预期输出
Hi how
are you
thanks
我的代码:
getline(infile, line);
ch = strdup(line.c_str());
ch1 = strtok(ch, " ");
while (ch1 != NULL)
{
a3[i] = ch1;
ch1 = strtok(NULL, " ");
i++;
}
我不知道要指定什么作为分隔符字符串。我使用strtok()
进行拆分,但失败了。任何人都可以帮助我吗?
答案 0 :(得分:1)
请查看示例代码here。你应该提供“\”作为strtok的分隔符字符串。 例如,
ch1 = strtok (ch,"\"");
可能你的问题与表示转义序列有关。请查看here以获取字符转义序列列表。
答案 1 :(得分:0)
根据您的输入:"Hi how" "are you" "thanks"
,如果您使用带有strtok
的{{1}}作为分隔符,它会将引用的字符串之间的空格视为字符串,因此如果(例如)你打印出结果字符串,每行一个,用方括号括起来,你得到:
"\""
即,每个引用字符串之间的空白字符本身被视为字符串。如果您提供给[Hi how]
[ ]
[are you]
[ ]
[thanks]
的分隔符是strtok
(即包括引号和空格),那么不会发生,但然后它也会破坏空格在引用的字符串中。
假设你可以依赖于你所关注的每一个项目,你想跳过任何东西,直到你得到一个引用,忽略引号,然后将数据读入你的输入字符串,直到你得到另一个引用,然后重复整个过程