C++でstring型からchar配列に値を代入する方法

stringのメンバ関数のc_str()を用いると、C++のstringをchar配列に代入できます。 c_str()は文字配列へのポインタを取得し、それをchar配列に代入します。

以下はコード例です

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    char arr[20];

    // 使用c_str()函数将string赋值给char数组
    std::strcpy(arr, str.c_str());

    std::cout << arr << std::endl;

    return 0;
}

このコードは、stringオブジェクトのstrに「Hello, world!」という文字列を格納し、その後c_str()関数を使ってstrをconst char*型ポインタに変換してから、strcpy()関数を使用してc_str()関数から返ってきたポインタの示す文字列をchar配列arrにコピーします。最後に、arrの内容を出力します。

注意、char の配列の長さは string の内容と空文字 ‘\0’ を納める十分な大きさになっている必要があります。 しかし C++11 では string のメンバ関数 copy() を使って string を char の配列にコピーすることもできます。これはバッファオーバーランのリスクを回避します。 例:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, world!";
    char arr[20];

    // 使用copy()函数将string赋值给char数组
    str.copy(arr, sizeof(arr));

    // 将最后一个字符设置为'\0',以表示字符串的结束
    arr[str.size()] = '\0';

    std::cout << arr << std::endl;

    return 0;
}

前の例と似ていますが、バッファオーバーフローのリスクを回避するためにstring メンバー関数 copy() を使用しています。copy() 関数を呼び出した後、最後の文字を手動で ‘\0’ に設定して、文字列の終了を示す必要があります。

bannerAds