使用 Golang 处理 ACM 的输入输出

260 阅读1分钟

首先

创建一个新的带缓冲的读取器(bufio.Reader类型)。这个读取器从标准输入(os.Stdin)读取数据。

或者

创建一个新的带缓冲的读取器(bufio.Reader类型),这个读取器从inputFile读取数据。

reader := bufio.NewReader(os.Stdin)

reader := bufio.NewReader(inputFile)

注:获取文件可使用 inputFile, err := os.Open("input.txt")

使用文件处理输入输出完整形式

inputFile, _ := os.Open("input.txt")
defer inputFile.Close()

outputFile, _ := os.Create("output.txt")
defer outputFile.Close()

reader := bufio.NewReader(inputFile)
writer := bufio.NewWriter(outputFile)
defer writer.Flush()

然后 通过 reader 获取单行的输入

inputStr, err := reader.ReadString('\n')

作用是从 reader 所代表的输入源中读取数据,直到遇到换行符 \n 为止,并以字符串的形式返回读取到的内容。

返回 字符串(string) 和 error 类型

既然获取了单行输入字符串,就可以进行操作了

  • trimmedLine := strings.TrimSpace(line)

作用是去除字符串 line 两端的空白字符(包括空格、制表符、换行符等)。

返回 字符串(string)

  • parts := strings.Split(line, " ")

作用是将字符串line按照指定的分隔符(这里是空格 " ")进行分割,并返回一个包含分割后子字符串的切片。

返回 字符串(string)

如果输入是数字类型,可以将字符串转 int 类型

  • num, err := strconv.Atoi(part)

作用是将字符串part转换为整数类型。

返回 int 和 error

至于输出,就直接使用 fmt.Println 或 fmt.Print

基于上面的 API,可处理大部分常见的输入输出样例。