我正在处理一个包含整数列表作为字符串的输入文件

10
..

我选择用ReadString('\n')方法逐行阅读

以下代码
line, error := inputReader.ReadString('\n')
lineStr := string(line)

控制台输出(长度和值)
lineStr %v 4
lineStr %v 10

lineStr的长度为“4”,可能是由于 rune 编码。

然后,我尝试了几种将其转换为简单整数但没有成功的方法。

Ex1
num, _ := strconv.ParseUint(lineStr, 0, 64)

输出数量为0(应为10)

Ex2
num, _ := strconv.Atoi(lineStr)

输出数量为0(应为10)

Ex3
num, _ := strconv.Atoi("10")

输出数量为10(确定)

Ex4
num, _ := strconv.ParseUint("10", 0, 64)

输出数量为10(确定)

字面意义上的字符串可以,但是文件中的字符串不起作用,这是什么问题?

提前致谢

最佳答案

在文档中:“ReadString读取直到输入中第一次出现delim为止,返回一个字符串,其中包含直到定界符(包括定界符)的数据。”

因此,我建议您使用扫描仪,它可以像您期望的那样处理这种情况:

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    lineStr := scanner.Text()
    num, _ := strconv.Atoi(lineStr)
    fmt.Println(lineStr, num)
}

关于string - golang : read text file line by line of int strings,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28983831/

10-12 16:12