1

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

ここでの問題は何ですか?

4

2 に答える 2

0

strtok()文字列を解析するときに引数を変更します

最初の例では、引数として読み取り専用の変数を提供しているstrtokため、実行時エラーが発生します。2 番目の例では、変更可能な引数を指定します。

于 2013-03-08T08:07:55.360 に答える
0

文字列 argumnet (あなたの場合largechars) の内容は、この関数によって変更され、小さな文字列 (トークン) に分割されますstrtok。しかし、最初のサンプルの最初の引数は const char*、コンテンツを変更しようとすると実行時エラーが発生するためです。

于 2013-03-08T08:12:56.003 に答える