可能重复:
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," ");
答案 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], " ");
}
清洁它不是,但它会起作用。
编辑:我的错误,这可能不适用于所有情况。