尝试使用C#应用程序从文本文件读取数据。有多行数据,每行以整数开头,然后是一堆双精度值。文本文件的一部分看起来像这样,
33 0.573140941467E-01 0.112914262390E-03 0.255553577735E-02 0.497192659486E-04 0.141869181079E-01-0.147813598922E-03
34 0.570076593453E-01 0.100112550891E-03 0.256427138318E-02-0.868691490164E-05 0.142821920093E-01-0.346011975369E-03
35 0.715507714946E-01 0.316132133031E-03-0.106581466521E-01-0.920513736900E-04 0.138018668842E-01-0.212219497066E-03
Run Code Online (Sandbox Code Playgroud)
33、34、35是整数值,后跟6个double值。并且不能保证这些双精度值之间有空格或其他定界符。即,如果双精度数为负数,则其前面将带有“-”,这将占用空间。因此,基本上所有6个double值都可能在一起。
现在的挑战是,如何优雅地提取它?
我试过的
String.Split(' ');
Run Code Online (Sandbox Code Playgroud)
这将无法正常工作,因为不能保证在初始整数值与其余双精度值之间留有空格。
这可以使用C ++在C ++中轻松解决sscanf。
String.Split(' ');
Run Code Online (Sandbox Code Playgroud)
包含双精度值的文本文件是由第三方工具生成的,我无法控制其输出。
有没有一种方法可以逐行优雅地提取整数和双精度值?
对于许多C++专家来说,这应该是非常简单的问题.
我有一些像下面的C++代码.
BOOL FindNumbersInObj() {
BOOL ret = true;
try {
//Do bunch of things here...
CMyObj pObj;
try {
pObj->GetMyObjectPtr();
}
catch (MyException ex) {
pObj = NULL;
ret = false;
}
ret = pObj->GetAllNumbers();
//Do something here too....
}
catch (MyException ex) {
//Log Error Message
ret = false;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
如你所见,在另一个TRY中有一个TRY.在CATCH中,它将pObj设置为NULL.那么它是否有可能从CATCH块中出来并执行代码行" ret = pObj-> GetAllNumbers(); "?如果是这样,那么除了代码崩溃之外我会.
这是我看到的一些leagcy/old代码.请在另一个TRY中提出你的意见.
而且,如果它遇到CATCH块,它会转到函数的末尾并调用return ret吗?