e: 皆さん、ありがとうございます。strtok が実際に文字列自体を変更することを認識していませんでした。うまくいけば、私は将来もっと愚かになるでしょう。
私は最近、本から C++ を学び始めました。私は今、文字列の解析に関する章にいます。
私の次の課題は、文字列のトークンを strtok で分割した後に元に戻すことですが、最初の区切り文字の後の文字列の残りの部分がどこにあるのかわかりません! 私はこれに非常に慣れていないので、これがばかげた質問である場合は申し訳ありません.
基本的に何が起こっているかは次のとおりです。 1. 「こんにちは、お元気ですか?」という文字列を入力します。2. 印刷すると、正常に出力されます。3. 次に、それをトークンに分割します (delimiters とスペースを使用) 4. それらはすべてきれいに出力されます 5. 文字列を再度出力すると、「hey」だけが残ります。
では、残りの文字列を取り戻すにはどうすればよいでしょうか。
これは私のコードです:
char the_string[ 81], *p;
cout << the_string << endl;
cout << "Input a string to parse: ";
cin.getline(the_string, 81);
p = strtok(the_string, ", ");
while (p != NULL) {
cout << p << endl;
p = strtok(NULL, ", ");
}
cout << the_string << endl;