C++ 使用带有char数组参数的strtok

C++ 使用带有char数组参数的strtok,c++,C++,我正在尝试使用分隔符拆分字符数组 这给了我一个运行时错误: #include <iostream> #include <cstring> int main() { char* largechars = "q=test&use=bingo"; char* chars_array = strtok(largechars, "&"); while(chars_array) { std::cout <<

我正在尝试使用分隔符拆分字符数组

这给了我一个运行时错误:

#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, "&");
    }
}
#包括
#包括
int main()
{
char*largechars=“q=test&use=bingo”;
char*chars_数组=strtok(largechars,&);
while(字符数组)
{
std::cout
strtok()
在解析字符串时修改其参数


第一个示例提供了一个只读变量作为strtok的参数,因此您得到了运行时错误。在第二个示例中,您提供了一个可以修改的参数。

字符串argumnet(在您的示例中是
大字符
)的内容被修改并分解为更小的字符串(令牌)在第一个例子中,第一个参数是“代码> const char */CODE >,所以当它试图修改内容时,它会导致运行时错误

,使用C++中的Strutk应该给你一个暗示,可能是错误的。而且,文字是conchchar *。但是两者都是字符数组,我是正确的吗?不,第一个版本。不是使用数组,而是指向字符串文字。指针是常数。和关于在C++中分割字符串,签出。关闭和读取指针和数组之间的差异。
#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, "&");
    }
}