3

我正在尝试从文本文件中读取数据并根据引号拆分读取的行。例如

"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()拆分,但它失败了。谁能帮我?

4

2 回答 2

1

请在此处查看示例代码。您应该向 strtok 提供 "\"" 作为分隔符字符串。例如,

ch1 = strtok (ch,"\"");

可能您的问题与表示转义序列有关。请在此处查看字符的转义序列列表。

于 2013-04-10T05:27:44.897 回答
0

给定您的输入: "Hi how" "are you" "thanks",如果您使用strtokwith"\""作为分隔符,它会将带引号的字符串之间的空格视为它们也是字符串,因此如果(例如)您打印出结果字符串,每行一个,由正方形包围括号,你会得到:

[Hi how]
[ ]
[are you]
[ ]
[thanks]

即,每个引用字符串之间的空白字符本身被视为字符串。如果您提供的分隔符strtok" \""(即,包括引号和空格),不会发生,但它也会在引号字符串内的空格处中断。

假设你可以依赖你关心的每一个被引用的项目,你想跳过任何东西直到你得到一个引用,忽略这个引用,然后将数据读入你的输入字符串直到你得到另一个引用,然后重复整个过程。

于 2013-04-10T05:54:54.540 回答