入力受け取り
C++
C++には便利なcinというものがあり、予め用意した受け取りのための変数に向けて>>と書くことでスペース•改行ごとに受け取ることができました。(std::はusingすることで省略しています)
入力例
1000 ShibeHasu
int num;
string str;
//スペース•改行区切りで受け取る
cin >> num >> str;
//出力
cout << num << " " << str << endl;
C#
C#ではConsole.ReadLine()というものを使い、一行ずつ文字列として受け取るようです。
なので、数値として受け取りたい場合はわざわざ変換してあげる必要があります
…めんどい(╯▽╰ )
入力例
10
single_str
100 200 300
My Name Is ShibeHasu
1200 Mokuhyou_Rate!!
/*
単体で受け取れるパターン
*/
//一行に一つの数値のみがある場合
int num = int.Parse(Console.ReadLine());
Console.WriteLine(num);
//一行に一つの文字列のみがある場合
string str = Console.ReadLine();
Console.WriteLine(str);
/*
複数の入力をまとめて受け取らないといけないパターン
このコードでは配列として受け取るところまでですが、使うときに配列[添え字]として使っていては読みずらい為
一度わかりやすい変数名に受け取った入力を再代入してから使うのが良いと思います
*/
//一行に複数の数値がある場合(スペース区切り)
int[] num_inputs = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
for (int i = 0; i < num_inputs.Length; i++) {
Console.Write(num_inputs[i] + " ");
}
Console.WriteLine();
//一行に複数の文字列がある場合(スペース区切り)
string[] str_inputs = Console.ReadLine().Split(' ').ToArray();
for (int i = 0; i < str_inputs.Length; i++) {
Console.Write(str_inputs[i] + " ");
}
Console.WriteLine();
/*
一行に複数の入力がある場合(数値、文字列などがごちゃ混ぜ)
(このタイプの入力サンプルでは、"行の中で一つ目に与えられる値が数値,二つ目が文字列"
の二要素の入力として書かれています)
文字列としてすべて受け取ったのちに必要な値のみ数値に変換して受け取っています
*/
string[] mixed_inputs = Console.ReadLine().Split(' ').ToArray();
int mixed_num = int.Parse(mixed_inputs[0]);
string mixed_str = mixed_inputs[1];
Console.WriteLine(mixed_num + " " + mixed_str);
出力
C++
上のサンプルでも書きましたがcout << 出力したいヤツ;で出力出来ます。
間にスペースを入れたい場合は<< ” ” << を入れるとOkです。
改行はcout << endl;です
↑それは知ってるもんね~~と思った方、これは知っているでしょうか??
(小数点以下の出力で便利な小技です)
setprecision(桁)で出力時に桁数指定できます!!
ちなみにfixedを使ったほうが正確な模様…(知っているでしょうかとか言いつつ、この記事書くのに念のため調べなおしてたらfixedなるものを知りました)
double PI = 3.14159265358;
//いつも通りの出力
cout << PI << endl;//3.14159と省略される
//整数部も合わせて10桁で出力
cout << setprecision(10) << PI << endl;//3.141592654
//小数第10位までを出力(整数部の長さによらない)
cout << fixed << setprecision(10) << PI << endl;//3.1415926536
まれに10-?以下の誤差ならOK系の問題でこれがないと、省略されてWAになることがある(私の経験談です)ので覚えておくと良いと思います😎
C#
C#も上の入力のサンプル時に書いていますが、
Console.Write(なにか)でできます。
Console.WriteLine(なにか)との違いは、出力後に改行を入れるかどうかです
(WriteLineが改行ありです)
改行のみしたい場合はConsole.WriteLine()のみ書けばOK!!
最後に
競プロをする上で必須の機能、入出力について記事にしてみました。
やはりC++に慣れている状態でほかの言語を使うとなると、簡単なことでもつまづいてしまうので大変でした。
この記事が私のようなC++ → C#を勉強中の人の道しるべになることを願います~
次回はコンテナ系(vectorとか,queueとか)について記事にしたいと思っています
ここまで読んで下さりありがとうございましたっ
コメント