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