0

在具有类似 xml 格式的文件中(但不是 xml)

 <mgrwt event="1">
<rscale>  1 1234</rscale>
<asrwt>0 4234</asrwt>
<pdfrwt beam="1">  1        2 0.11790045E+00 0.22210436E+03</pdfrwt>
<pdfrwt beam="2">  1       -2 0.92962177E-02 0.22210436E+03</pdfrwt>
<totfact> 0.34727485E+01</totfact>
<matchscale> 0.10000000E+11 0.41999999E+02 0.61496031E+02</matchscale>
</mgrwt>

我想用 C++ 逐块读取文件(我知道 ;-),然后将变量分配给每个块的子组件, - 例如,我知道

 <pdfrwt beam="1">  1        2 0.11790045E+00 0.22210436E+03</pdfrwt>

1 2 0.11790045E+00 0.22210436E+03始终是数字,而不是字符串,所以问题是,如何从每个块中的每一行中剥离/读取以空格分隔的数字?

我也试过这个用空格分隔的读取输入数字,但无法帮助我..

谢谢

4

1 回答 1

0

我建议逐行阅读并使用std::istringstream来解析字符串。
例如,您可以通过搜索 first 找出数字的开始位置>
要么将字符串流推进这个数量,要么......

创建一个包含“<”之前的所有文本的子字符串。istringstream使用此子字符串创建一个。然后尝试类似:

unsigned int first, second;
double third, fourth;
string_stream >> first >> second >> third >> fourth;
于 2012-12-17T21:41:28.993 回答