Cスタイルの文字列をC++ std::string
に変換する最適な方法は何ですか?過去に私はstringstream
を使ってそれをしました。より良い方法がありますか?あなたは、C-文字列から直接std::string
を初期化することができますCスタイルの文字列をC++のstd :: stringに変換する
char* myStr = "This is a C string!";
std::string myCppString = myStr;
Cスタイルの文字列をC++ std::string
に変換する最適な方法は何ですか?過去に私はstringstream
を使ってそれをしました。より良い方法がありますか?あなたは、C-文字列から直接std::string
を初期化することができますCスタイルの文字列をC++のstd :: stringに変換する
char* myStr = "This is a C string!";
std::string myCppString = myStr;
C++文字列を使用すると、Cスタイルの文字列を変換することができますコンストラクタを持っています文字列クラス:documentation あなたが興味があるのは:
//string(char* s)
std::string str(cstring);
そして:
//string(char* s, size_t n)
std::string str(cstring, len_str);
そして今私は 'delete myStr;' noをしなければなりません? –
@BarnabasSzabolcsいいえ、それは必要ではありません。新しいもので割り当てられたメモリだけを削除する必要があります。文字列リテラルへのポインタを解放する必要はありません。 – templatetypedef
私は正しいと思うので、文字列はこのchar *の内部コピーを作成します。 –
:
std::string s = "i am a c string";
std::string t = std::string("i am one too");
は別のコンストラクタを確認
あなたはstd::string
にchar*
を意味する場合は、コンストラクタを使用することができます。
char* a;
std::string s(a);
それともstring s
がすでに存在する場合、単純にこの書き込み:あなただけに、C-文字列を変更するには1、引数のコンストラクタを使用することができます(新しいストレージを宣言せずに)一般的に
s=std::string(a);
いいえあなたの例では、std :: stringのコンストラクタに論理エラーがスローされます。 'a'はNULLにすることはできません。 –
を文字列の右辺値は:(問題は、私はちょうどに走った)、例えば機能を参照することによって、それを渡すために文字列を構築するとき
string xyz = std::string("this is a test") +
std::string(" for the next 60 seconds ") +
std::string("of the emergency broadcast system.");
しかし、これは動作しません。
あなたが参照にconst参照にする必要がありvoid ProcessString(std::string& username);
ProcessString(std::string("this is a test")); // fails
:
void ProcessString(const std::string& username);
ProcessString(std::string("this is a test")); // works.
C++11
:
std::string operator ""_s(const char * str, std::size_t len) {
return std::string(str, len);
}
auto s1 = "abc\0\0def"; // C style string
auto s2 = "abc\0\0def"_s; // C++ style std::string
C++14
文字列リテラル演算子をオーバーロードする:std::string_literals
名前空間から演算子を使用します
using namespace std::string_literals;
auto s3 = "abc\0\0def"s; // is a std::string
cstringとは? MFCから 'CString'を意味しますか?または、ヌルで終了するchar配列(C文字列)?または、他の何か? –