在 C# 中的一行中读取不同的数据类型
本文关键字:读取 一行 数据类型 | 更新日期: 2023-09-27 18:34:51
我有一个文件格式是这样的:
14 00 1.5121
14 01 1.3922
14 02 1.2231
遵循以下结构
int int double
由空格分隔。
目前我的代码是:
StreamReader file = new StreamReader("file_to_open.txt");
String buff;
while( file.peek() > 0 )
{
buff = file.ReadLine();
}
但是,我陷入了如何使用buff
自动解析int int double
格式的困扰。C# 中是否有允许我这样做的函数?
谢谢!
string line = file.ReadLine;
string[] elements = line.Split(' ');
int a = Convert.ToInt32(elements[0]);
int b = Convert.ToInt32(elements[1]);
double c = Convert.ToDouble(elements[2]);
首先将
每个输入行拆分为字段:
string[] fields = buff.Split(' ');
然后分别解析每个字段:
if(fields.Length < 3) throw...
int i1 = int.Parse(field[0];
int is = int.Parse(field[1];
string s = field[2];
根据文件的来源(其内容的可靠性(,您应该添加大量错误处理和防御性编程(使用 TryParse(((
C# 中是否有允许我这样做的函数?
如果您逐行读取文件并用空格将其拆分,是的。您可以使用Int32.Parse
和Double.Parse
方法。
string line;
StreamReader file = new StreamReader("file_to_open.txt");
while((line = file.ReadLine()) != null)
{
//
}
在此while
语句中,您可以拆分和解析您的值,例如;
var array = line.Split(null);
int firstInt = Int32.Parse(array[0]);
int firstInt = Int32.Parse(array[1]);
double firstDouble = Double.Parse(array[2]);
请记住,如果您不提供任何IFormatProvider
,则此方法默认使用CurrentCulture
。如果你CurrentCulture
的NumberDecimalSeparator
不是.
,Double.Parse
方法会抛出FormatException
。
但我通常建议使用他们的TryParse
方法而不是Parse
方法,因为如果解析操作失败,这个TryParse
方法将返回false
而不是抛出异常。