如何使用字符串参数而不是字符数组来使用strtok()?

时间:2011-06-05 15:51:19

标签: c++ strtok token

  

可能重复:
  Using strtok with a string argument (instead of 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," ");

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果您的意思是std::string,则不能,strtok仅适用于char*

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

答案 2 :(得分:-1)

string str;
while(infile)
{
    getline(infile, str);
    char* token=strtok(&str[0], " ");
}

清洁它不是,但它会起作用。

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