要点: printf は C 言語の組み込みデータしか出力できませんが、string は組み込みではなく、単なる拡張クラスであり、直接出力するのは絶対に間違っています。
実際、この方法は非常に単純で、次の関数を使用して出力するだけです。
string test = "测试代码段";
printf("%s",test.c_str());
c_str()関数を呼び出して出力し、cout を使用して出力します。
c_str() 関数に関するいくつかの注意事項を次に示します。
1. c_str() 関数は、通常の c 文字列へのポインターを返します。その内容は、文字列クラス自体のオブジェクトと同じです。文字列オブジェクトは、c_str を介して c の文字列のスタイルに変換できます。 () 文字列クラスの関数。
2.
c_str() 関数は、通常の c 文字列へのポインターを返します。その内容は、この文字列と同じです。
これは C 言語との互換性のためです.C 言語には文字列型がないため、文字列クラス オブジェクトのメンバー関数 c_str() を使用して、文字列オブジェクトを C の文字列スタイルに変換する必要があります。
注: メソッド c_str() によって返されるポインターを操作するには、必ず strcpy() 関数などを使用してください。
例: しないほうがよい:
char* p;
string test="test";
p = test.c_str(); //c最后指向的内容是废用,因为s对象被析构,其内容被处理
次のように使用する必要があります。
char p[20];
string test="test";
strcpy(p,test.c_str());
このように、c_str() は一時ポインターを返し、操作できません。