printf が文字列型を出力する方法、および c_str() 関数のいくつかの重要なポイント

要点: 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() は一時ポインターを返し、操作できません。

おすすめ

転載: blog.csdn.net/weixin_49418695/article/details/123592075