C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で文字列をchar配列に変換する3つの方法を解説

C++で文字列(std::string)を char 配列に変換したい場面は、C言語のライブラリ関数と連携するときなどによくあります。この記事では、文字列をchar配列へ変換する代表的な3つの方法を、サンプルコードと実行結果とあわせてわかりやすく解説します。

方法1:forループで1文字ずつコピーする

アルゴリズム

開始
    char配列変数 m に文字列値を代入する
    文字列変数 str を定義する
    i = 0 ~ sizeof(m) の間、以下を繰り返す
        m から str へ1文字ずつコピーする
        str の内容を1文字ずつ出力する
終了

サンプルコード

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    char m[]="Tutorialspoint";
    string str;
    int i;
    for(i=0;i<sizeof(m);i++)
    {
        str[i]=m[i];
        cout<<str[i];
    }
    return 0;
}

方法2:strcpy()関数を使う

strcpy() 関数を呼び出すだけで、文字列をchar配列へ簡単にコピーできます。C言語の時代から使われている定番の手法です。

アルゴリズム

開始
    文字列 s に値を代入する
    strcpy() を使って文字列の内容をchar配列へコピーする
終了

サンプルコード

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
    string str = "Tutorialspoint";
    char c[str.size() + 1];
    strcpy(c, str.c_str());
    cout << c << '\n';
    return 0;
}

出力結果

Tutorialspoint

方法3:std::string::copy()を使う

C言語由来の strcpy() を避けたい場合は、C++のメンバ関数である std::string::copy() を代わりに使用できます。よりC++らしい書き方といえるでしょう。

アルゴリズム

開始
    文字列 s に値を代入する
    copy() を使って文字列の内容をchar配列へコピーする
終了

サンプルコード

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str = "Tutorialspoint";
    char c[str.size() + 1];
    str.copy(c, str.size() + 1);
    c[str.size()] = '\0';
    cout << c << '\n';
    return 0;
}

出力結果

Tutorialspoint

まとめ

文字列をchar配列へ変換する方法は、主に「ループで1文字ずつコピー」「strcpy() を使う」「std::string::copy() を使う」の3つがあります。手軽さなら strcpy()、安全性やC++らしさを重視するなら std::string::copy() がおすすめです。なお、サンプルコード内の char c[str.size() + 1] は可変長配列(VLA)と呼ばれるもので、標準C++の正式な機能ではない点に注意してください。移植性を高めたい場合は、newstd::vector<char> の利用を検討するとよいでしょう。

  1. C#で文字列をint型(整数)に変換する方法を解説

    C#では、数値として表現された文字列をint型(整数)に変換する場面がよくあります。例えば、ユーザー入力やファイルから読み込んだデータを計算に使いたい場合などです。本記事では、Int32.Parse()メソッドを使った基本的な変換方法を解説します。Int32.Parse()メソッドとはInt32.Parse()は、数字の文字列を32ビット符号付き整数(int型)に変換するためのメソッドです。変換元の文字列が有効な数値形式でない場合、FormatExceptionがスローされる点に注意してください。変換の手順まず、変換対象となる文字列を用意します。string str = 9999;次に、Int

  2. C#でchar型配列を文字列(string)に変換する方法

    C#では、stringクラスのコンストラクタを使うことで、char型の配列を簡単に文字列へ変換できます。ここでは、その基本的な手順とサンプルコードを紹介します。1. char型配列を用意するまず、変換元となる5文字分のchar型配列を作成し、各要素に文字を代入します。char[] ch = new char[15]; ch[0] = T; ch[1] = r; ch[2] = i; ch[3] = c; ch[4] = k;2. 配列を文字列に変換するchar型配列を引数として渡せるstringコンストラクタを使用すれば、配列全体を1つの文字列にまとめられます。string str = new