C#:如何将 Stream Reader 转换为 Int

C#: How to make Stream Reader to Int

我正在读取一个包含数字的文件,然后当我尝试将其转换为 Int 时出现此错误,System.FormatException:'Input string was not in a correct format.' 读取文件有效并且我已经测试所有这些,无论我尝试什么,它似乎都陷入困境。这是我到目前为止所做的:

StreamReader share_1 = new StreamReader("Share_1_256.txt");

string data_1 = share_1.ReadToEnd();

int intData1 = Int16.Parse(data_1);

然后如果解析在里面,它不会打印任何东西。

解析每一行

while (!reader.EndOfStream) 
{ 
    string line = reader.ReadLine(); 
    int intData1 = Int16.Parse(line);
} 

正如我们在您的 post 中看到的那样,您的输入文件包含的不是一个 number,而是多个。因此,您需要遍历文件的所有行,然后尝试对字符串的每一行进行解析。

编辑:旧代码使用的是外部库。对于原始 C#,请尝试:

using (StringReader reader = new StringReader(input))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // Do something with the line
    }
}

此外,我鼓励您始终使用 TryParse 方法而不是 Parse 方法将字符串解析为数字。

您可以在 C# 中找到该常见问题的一些详细信息和不同实现:C#: Looping through lines of multiline string

您可以在 File class 和 Linq 的帮助下简化代码并摆脱 StreamReader:

// Turn text file into IEnumerable<int>:
var data = File
  .ReadLines("Share_1_256.txt")
  .Select(line => int.Parse(line));

//TODO: add .OrderBy(item => item); if you want to sort items

// Loop over all numbers within file: 15, 1, 48, ..., 32
foreach (int item in data) {
  //TODO: Put relevant code here, e.g. Console.WriteLine(item);
}