0

可能重复:
使用带有字符串参数的 strtok(而不是 char*)?

使用时strtok()我执行以下操作

char str[300];
while(infile) {
  infile.getline(str,300);
  char* token=strtok(str," ");

我如何使用字符串而不是字符数组char str[300];

有没有办法用它变成这样,string str; while(infile) { infile.getline(str,300); char* token=strtok(str," ");

4

3 回答 3

2

我认为你不能,至少在没有非常小心的情况下不能;strtok()修改它的参数,\0在每个识别的标记之后写入 a ,并且通常表现得像一个即使对于 C 也表现不佳的函数,更不用说 C++ 了。我的建议是寻找原生 C++ 解决方案。

于 2011-06-05T15:55:25.207 回答
1

如果您的意思是std::string,则不能,strtok只能与 一起使用char*

一个简单的解决方案可能是strdup您的解决方案string.c_str,并将其传递给strtok.

于 2011-06-05T15:54:56.757 回答
-1
string str;
while(infile)
{
    getline(infile, str);
    char* token=strtok(&str[0], " ");
}

清洁它不是,但它会工作。

编辑:我的错误,这可能不适用于所有情况。

于 2011-06-05T16:09:10.947 回答