我正在尝试使用分隔符拆分char数组。
这给了我一个运行时错误:
#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, "&");
}
}
这里有什么问题?
答案 0 :(得分:0)
strtok()
在解析字符串
您的第一个示例提供了一个只读变量作为strtok
的参数,因此您会收到运行时错误。在第二个示例中,您提供了一个可以修改的参数。
答案 1 :(得分:0)
字符串argumnet(在您的情况下为largechars
)的内容被修改并通过此函数strtok
分解为更小的字符串(标记)。但是在你的第一个样本中,第一个参数是const char*
所以当它试图修改内容时会导致运行时错误