C++でintをstring(文字列)に変換する最も簡単な方法
この記事では、C言語・C++において整数型(int)の値を文字列(string)に変換する方法を解説します。
基本の考え方:sprintf()関数を使う
変換のロジックは非常にシンプルです。ここではsprintf()関数を使用します。
sprintf()は、値や文字列をコンソール画面ではなく「文字列バッファ」に出力するための関数です。標準出力に表示するprintf()との違いは、出力先が文字列変数であるという点だけです。第1引数には、変換結果を保存したい文字配列(バッファ)を指定します。
処理の流れは以下のとおりです。
入力:ユーザーが数値(例:42)を入力する 出力:その数値に対応する文字列「"42"」が返される
アルゴリズム
ステップ1:ユーザーから数値を入力してもらう ステップ2:結果を格納するための空の文字列バッファを用意する ステップ3:sprintf()を使って数値を文字列に変換する ステップ4:終了
サンプルコード
#include <stdio.h>
int main(void) {
char str[20]; // 数値を格納するための空の文字列バッファを用意
int number;
printf("数字を入力してください: ");
scanf("%d", &number);
sprintf(str, "%d", number); // sprintf()で数値を文字列に変換
printf("入力された値: %s\n", str);
return 0;
}実行結果
数字を入力してください: 46 入力された値: 46
より安全でモダンな方法:std::to_string()
sprintf()はC言語由来の関数のため、バッファサイズを超える書き込みなど、使い方を誤ると危険を伴います。C++11以降では、std::to_string()を使うことで、より簡潔かつ安全に数値を文字列へ変換できます。
#include <iostream>
#include <string>
int main() {
int number = 46;
std::string str = std::to_string(number); // 数値を直接文字列に変換
std::cout << "変換結果: " << str << std::endl;
return 0;
}実行結果:
変換結果: 46
まとめ
- C言語スタイルのコードでは、sprintf()を使えば簡単にintを文字列に変換できる
- C++11以降なら、バッファ管理不要で安全性の高いstd::to_string()が推奨される
- 用途に応じて、適切な変換方法を選択しよう
-
【C++】DFS(深さ優先探索)を使って2次元マトリクス内の島の数を求める方法
問題の概要この問題では、0と1のみで構成される2次元のバイナリ行列が与えられます。私たちのタスクは、DFS(深さ優先探索)を用いて、その行列の中にいくつの「島」が存在するかを求めることです。ここでいう島とは、行列の中で上下左右だけでなく斜め方向にも隣接している、1つ以上の「1」の集まりのことを指します。具体例で問題を理解しよう入力 : bin[][] = {{ 1 0 0 0} {0 1 0 1} {0 0 0 0} {0 0 1 0}} 出力 : 3説明:この行列には以下の3つの島が存在します。bin00 と bin11
-
C++で文字列の部分文字列の総数を求める方法を解説
この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文