AtCoder用メモ|標準入出力のやり方
よく使う言語別の、標準入力/標準出力。
#自分用 #最小構成
C++
1行読み取り/1行出力
code:main.cpp
using namespace std; // 以降 std を書かなくて済む
int main() {
string line;
cin >> line; // 入力
cout << line << endl; // 出力
}
↓一文字づつ出力する場合
code:main-add.cpp
cin >> line;
for (int i = 0; si != '\0'; i++) { }
空白で区切られた場合
code:blank.cpp
int main() {
string line1, line2;
cin >> line1 >> line2; // 入力
cout << line1 << line2 << endl; // 出力
}
可変長配列を扱いたい場合
code:variable.cpp
// 省略
// 省略
int num;
cin >> num;
vector<string> line(num);
#補足
JavaScript
1行読み取り/1行出力 ※UNIX系のみ、Windowsでは不可らしい(詳細) code:io1.js
let line = require("fs").readFileSync("/dev/stdin", "utf-8"); // 入力
console.log(line); // 出力
複数行読み取り/複数行出力 ※Node.js用
code:io2.js
process.stdin.resume();
process.stdin.setEncoding('utf8');
let lines = [];
let reader = require('readline').createInterface({
input: process.stdin, // 標準入力設定
output: process.stdout // 標準出力設定
});
reader.on('line', (line) => {
lines.push(line); // 1行を配列に追加(入力)
});
reader.on('close', () => {
for (i = 0; i < lines.length; i++) {
console.log(linesi); // 1行ずつ出力 }
});
Java
1行読み取り/1行出力
code:main.java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String line = s.nextLine(); // 入力
System.out.println(line); // 出力
}
}
#補足
数値 → s.nextInt()
次の空白文字まで → s.next()
Python 3
1行読み取り/1行出力
code:main.py
line = input();
print(line);
1行複数列/数値
code:main2.py
A = list(map(int, input().split()))
split()で" "ごとに区切ってリスト化 → ただし文字列 ['1', '2', '3']
map()で複数のint化 → ただしオブジェクトになる <map object at 0x……>
list()でオブジェクトをリストに戻す [1, 2, 3]
複数列を読み取って辞書化
code:main3.py
n = int(input())
for i in range(n):
a,b,c = list(map(int, input().split()))
aがキー
[b, c] が値
Rust
1行読み取り/1行出力
code:main.rs
use std::io;
fn main() {
let mut line: String = String::new;
io::stdin()
.read_line(&mut line)
.expect("読み込み失敗");
println!(line);
}
#補足
[let]ユーザーの入力を格納する変数を定義
let apple → appleは不変(immutable) ※デフォルト
let mut apple → appleは変更可能("mut"able)
[String] → UTF-8のテキスト(標準で使える)
[::]関連する関数
[::new] 新しい空の文字列を作成
[io]モジュールを使うにはこう書く
[.read_line()] ユーザーからの入力を受ける(上書きせず追加)
[(&mut line)]"&"=参照の意味
参照もデフォで不変なため、可変(mut)にする必要がある
x.x.x のように続けて書けるが、可読性のためにインデントも使用できる
[.expect()]エラー時にプログラムを終了 → "()"内を返す
Rustではこれを書かないとコンパイルエラーになる(安全)