HOWTO · C++
C++ で Char 配列を文字列に変換する方法
この記事では、C++ で char 配列を文字列に変換する複数の方法を紹介します。
この記事では、Char 配列を文字列コンテナに変換する複数のメソッドを紹介します。
文字列の配列を文字列に変換するには std::string コンストラクタを使用する
この例では、定数 C-文字列を宣言し、これを文字列のコンストラクタのパラメータとして使用します。このメソッドは文字列の長さを自動的に計算します。コンストラクタ呼び出し後、必要に応じて tmp_string 変数を操作することができます。
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
const char* c_string = "This will be stored in std::string";
string tmp_string(c_string);
cout << tmp_string << endl;
return EXIT_SUCCESS;
}
出力:
This will be stored in std::string
関数 memove を用いて文字列を文字列に変換する
より簡単な方法は、char* のデータを初期化された string コンテナにコピーすることです。この方法では、memmove 関数に渡すために char 配列長を事前に知っておく必要があります。正しい動作をするためには string コンテナの初期化が重要であり、そのために tmp_string 変数には 0x01 バイトのバイトを入れていることに注意してください。
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
constexpr int C_STRING_LENGTH = 34;
int main() {
const char* c_string = "This will be stored in std::string";
string tmp_string(C_STRING_LENGTH, 1);
memmove(&tmp_string[0], c_string, C_STRING_LENGTH);
cout << tmp_string << endl;
return EXIT_SUCCESS;
}
また、c_string のデータを tmp_string にコピーするには、以下のような関数を使用します。memcpy、memccpy、mempcpy、strcpy、strncpy などの関数を使って c_string のデータを tmp_string にコピーすることもできますが、マニュアルページをよく読んで、エッジケースやバグを考慮してください。
Char 配列を文字列に変換するには std::basic_string::assign メソッドを使用する
先ほどの例と同様に、このメソッドも Char 配列の長さを必要とします。ここでは、tmp_ptr という名前の char ポインタを定義し、tmp_string の最初の文字のアドレスをこれに代入します。
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
constexpr int C_STRING_LENGTH = 34;
int main() {
const char* c_string = "This will be stored in std::string";
string tmp_string;
tmp_string.assign(c_string, C_STRING_LENGTH);
cout << tmp_string << endl;
return EXIT_SUCCESS;
}