web-dev-qa-db-ja.com

const char *をstd :: stringに変換する

処理関数からconst char *が返されました。これをstd::stringのインスタンスに変換/割り当てて、さらに操作したいと思います。これは簡単なはずですが、どうすればよいかを示すドキュメントを見つけることができませんでした。明らかに、私は何かが欠けています。洞察は感謝します。

11
Justin Fletcher

std::stringにはコンストラクタfromconst char *があります。つまり、次のように記述しても問題ありません。

const char* str="hello";
std::string s = str;
35

試す

 const char * s = "hello";
 std::string str(s);

トリックを行います。

11
Ed Heal

std::stringには、const char*を暗黙的に変換するコンストラクターがあります。ほとんどの場合、何もする必要はありません。 const char*を渡すだけで、std::stringが受け入れられ、機能します。

2
Fred Larson

3つの可能性があります。コンストラクター、代入演算子、またはメンバー関数assignを使用できます(メンバー関数insertも考慮されない場合は、使用することもできます:)) `

例えば

#include <iostream>
#include <string>

const char * f() { return "Hello Fletch"; }

int main()
{
   std::string s1 = f();

   std::string s2;
   s2 = f();

   std::string s3;
   s3.assign( f() );

   std::cout << s1 << std::endl;
   std::cout << s2 << std::endl;
   std::cout << s3 << std::endl;
}
1

あなたは多くのオプションを持っています:

const char* dosth() { return "hey"; }

string s1 = dosth();
string s2 (dosth());
string s3 {dosth()};
auto   s4 = (string)dosth();

ライブデモドキュメント

ご了承ください s3およびs4はC++ 11の機能です。古いコンパイラーや非準拠のコンパイラーを使用する必要がある場合は、他のオプションのいずれかを使用する必要があります。

1
Appleshell