我试图用定界符分割一个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, "&");
    }
}


在此处演示http://ideone.com/OpNssn

这个程序工作正常:

#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, "&");
    }
}


在此处演示http://ideone.com/Ye8C8k

这是什么问题?

最佳答案

字符串argumnet的内容(在您的情况下为largechars)已被此函数strtok修改并分解为较小的字符串(令牌)。但是在您的第一个示例中,第一个参数是const char*,因此当它尝试修改内容时,将导致运行时错误

关于c++ - 将strtok与char数组参数一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15289129/

10-16 05:20