LoginSignup
2
0

More than 3 years have passed since last update.

GoでC++のcin的な改行、空白まで入力を読み込む

Posted at

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でいくつかの問題に使ってみましたが正解できたのでまあ使えるのかなと思います。もうちょっと区切る文字が必要になるかもしれないです。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0