C++ で Char 配列を文字列に変換する方法
胡金庫
2023年10月12日
C++
C++ Char
C++ String
-
文字列の配列を文字列に変換するには
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;
}
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: 胡金庫
関連記事 - C++ Char
- C++ で Char の ASCII 値を取得する
- C++ で文字列の文字の出現回数をカウントする
- C++ で ASCII を char に変換する方法
- C++ で文字列配列を Int に変換する方法
- C++ で文字列を Char 配列に変換する方法
