C++で Char 配列を文字列に変換する方法

  1. 文字列の配列を文字列に変換するには std::string コンストラクタを使う
  2. 関数 memove を用いて文字列を文字列に変換する
  3. Char 配列を文字列に変換するには std::basic_string::assign メソッドを使う

この記事では、Char 配列を文字列コンテナに変換する複数のメソッドを紹介します。

文字列の配列を文字列に変換するには std::string コンストラクタを使う

この例では、定数 C-文字列を宣言し、これを文字列のコンストラクタのパラメータとして使用します。このメソッドは文字列の長さを自動的に計算します。コンストラクタ呼び出し後、必要に応じて tmp_string 変数を操作することができます。

#include <iostream>
#include <string>

using std::cout;
using std::cin;
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 <iostream>
#include <string>
#include <cstring>

using std::cout;
using std::cin;
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 にコピーするには、以下のような関数を使用します。memcpymemccpymempcpystrcpystrncpy などの関数を使って c_string のデータを tmp_string にコピーすることもできますが、マニュアルページをよく読んで、エッジケースやバグを考慮してください。

Char 配列を文字列に変換するには std::basic_string::assign メソッドを使う

先ほどの例と同様に、このメソッドも Char 配列の長さを必要とします。ここでは、tmp_ptr という名前の char ポインタを定義し、tmp_string の最初の文字のアドレスをこれに代入します。

#include <iostream>
#include <string>

using std::cout;
using std::cin;
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++ で文字列配列を Int に変換する方法
  • 関連記事 - C++ String

  • C++で文字列が数値かどうかを判断する方法
  • C++ で文字列を逆にする方法
  • comments powered by Disqus