我正在尝试使用分隔符拆分一个字符数组。
这给了我一个运行时错误:
#include <iostream>
#include <cstring>
int main()
{
char* largechars = "q=test&use=bingo";
char* chars_array = strtok(largechars, "&");
while(chars_array)
{
std::cout << chars_array << '\n';
chars_array = strtok(NULL, "&");
}
}
这个程序运行良好:
#include <iostream>
#include <cstring>
int main()
{
char largechars[] = "q=test&use=bingo";
char* chars_array = strtok(largechars, "&");
while(chars_array)
{
std::cout << chars_array << '\n';
chars_array = strtok(NULL, "&");
}
}
这里有什么问题?
最佳答案
字符串 argumnet 的内容(在您的例子中是 largechars
)被这个函数 strtok
修改并分解成更小的字符串(标记)。但是在您的第一个示例中,第一个参数是 const char*
因此,当它尝试修改内容时,将导致运行时错误
关于c++ - 使用带有 char 数组参数的 strtok,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289129/