C++のstring
をchar配列に変換するのは、stringのc_str
関数を使用してからstrcpy
を実行するのは非常に簡単です。しかし、その逆の方法は?
:char arr[ ] = "This is a test";
のようなchar配列を持っていて、string str = "This is a test
に戻すことができます。
string
クラスには、NULLで終わるC文字列をとるコンストラクタがあります。
char arr[ ] = "This is a test";
string str(arr);
// You can also assign directly to a string.
str = "This is another string";
// or
str = arr;
別の解決策はこのようになります、
char arr[] = "mom";
std::cout << "hi " << std::string(arr);
余分な変数を使わないようにします。
トップ投票の回答では見逃されている小さな問題があります。つまり、文字配列には0が含まれる可能性があります。上記のように単一のパラメーターを持つコンストラクターを使用すると、データが失われます。考えられる解決策は次のとおりです。
cout << string("123\0 123") << endl;
cout << string("123\0 123", 8) << endl;
出力は以下のとおりです。
123
123 123
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main ()
{
char *tmp = (char *)malloc(128);
int n=sprintf(tmp, "Hello from Chile.");
string tmp_str = tmp;
cout << *tmp << " : is a char array beginning with " <<n <<" chars long\n" << endl;
cout << tmp_str << " : is a string with " <<n <<" chars long\n" << endl;
free(tmp);
return 0;
}
でる:
H : is a char array beginning with 17 chars long
Hello from Chile. :is a string with 17 chars long