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

How to use strtok() using a string argumnet instead of character array?

本文关键字:strtok 数组 字符 字符串 何使用 argument      更新时间:2023-10-16

可能重复:
将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," ");

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

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

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

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

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

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