Go言語の入力、一行ずつ読み込むとかは記事が出てきたんですけど、次の改行まで読み込むとかは見つけれなかったので自分で作ってみました。
###cinとは
#include <iostream>
int main() {
int n;
std::cin >> n;
std::cout << n << std::endl;
}
こんな感じで使います。次の改行か空白まで読み込んでくれるので非常に便利な標準入力です。
###Goのコード
package main
import (
"os"
"bufio"
"strconv"
)
var(
stdin = bufio.NewReader(os.Stdin)
)
//次のスペースか改行まで読み込む
func gostring() string {
byte_ls := make([]byte,0)
for {
b, _ := stdin.ReadByte()
//区切り文字を何にするのか指定
if b == 32 || b == 10 || b == 0{
return string(byte_ls)
} else if b == 13 {
continue
} else {
byte_ls = append(byte_ls,b)
}
}
}
//上の関数のintバージョン
func goint() int {
n,_ := strconv.Atoi(gostring())
return n
}
ReadByte()で1バイトずつ読み込むことができるのでこれで指定した文字コードが出てくるまで読み込み、[]byteにappendします。13の時にcontinueしているのは、動く環境によるのかわからないんですけど、\r\nという改行があるのでその場合に\rを文字列に追加しないようにしています。一応、atcoderでいくつかの問題に使ってみましたが正解できたのでまあ使えるのかなと思います。もうちょっと区切る文字が必要になるかもしれないです。