導入
ユーザー入力やファイルの中身は「文字列」で来ることが多く、それを数値に直したり、逆に数値を文字列にしたりする場面がよくあります。ここではその変換と、1行まるごと読む入力を学びます。
説明
文字列 → 数値は stoi(int)・stod(double)、数値 → 文字列は to_string を使います。
#include <iostream>
#include <string>
using namespace std;
int main() {
string a = "42";
int n = stoi(a); // 文字列 "42" → 数値 42
cout << n * 2 << endl; // 84
double d = stod("3.14"); // 文字列 → double
cout << d + 1 << endl; // 4.14
string s = to_string(100); // 数値 → 文字列 "100"
cout << "値は " + s << endl; // 値は 100(+ で連結できる)
return 0;
}
入力は、空白で区切って読む cin >> と、1行まるごと読む getline(cin, s) の使い分けが大切です。
flowchart TB in["入力: 東京 都"] in --> a["cin >> s;<br/>→ s = 東京(空白で止まる)"] in --> b["getline(cin, s);<br/>→ s = 東京 都(1行すべて)"]
#include <iostream>
#include <string>
using namespace std;
int main() {
string line;
getline(cin, line); // 空白を含めて1行を読み込む
cout << "入力: " << line << endl;
return 0;
}
注意:
cin >> n;の後にgetlineを使うと、残った改行を先に読んでしまい空行になることがあります。そのときはcin.ignore();を1回はさみます。実務でよくハマるポイントです。
まとめ
stoi / stod / to_string で文字列と数値を行き来でき、getline で1行入力ができます。文字列は入出力の入口・出口で必ず使うので、ここを固めておくと後がラクになります。