C++ で Char 配列を文字列に変換する方法
胡金庫
2023年10月12日
-
文字列の配列を文字列に変換するには
std::string
コンストラクタを使用する -
関数
memove
を用いて文字列を文字列に変換する -
Char
配列を文字列に変換するにはstd::basic_string::assign
メソッドを使用する
この記事では、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;
}
著者: 胡金庫
関連記事 - C++ Char
- C++ で Char の ASCII 値を取得する
- C++ で文字列の文字の出現回数をカウントする
- C++ で ASCII を char に変換する方法
- C++ で文字列配列を Int に変換する方法
- C++ で文字列を Char 配列に変換する方法