MFC XML获得单个节点的文本内容并转化为双精度数据解决方案
MFC XML获得单个节点的文本内容并转化为双精度数据
RT
请问用MFC的XMLNODE->text提取单个节点的文本内容之后,如何将其中的双精度浮点数据提取出来?
例如
<line>NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507 40.3951 34.5307 29.0579 23.9764 19.2851 14.9846 11.0768 7.5566 4.4237 1.6815 -0.6687 -2.6264 -4.1958 -5.3758 -6.1628 -6.5570 -6.5568 -6.1649 -5.3812 -4.2050 -2.6363 -0.6784 1.6692 4.4094 7.5451 11.0732 14.9916 19.2990 23.9957 29.0830 34.5635 40.4363 46.7010 53.3582 60.4056 67.8421 75.6717 83.8938 92.5083 NaN NaN</line>
读入的文本内容为字符串:
“NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507 40.3951 34.5307 29.0579 23.9764 19.2851 14.9846 11.0768 7.5566 4.4237 1.6815 -0.6687 -2.6264 -4.1958 -5.3758 -6.1628 -6.5570 -6.5568 -6.1649 -5.3812 -4.2050 -2.6363 -0.6784 1.6692 4.4094 7.5451 11.0732 14.9916 19.2990 23.9957 29.0830 34.5635 40.4363 46.7010 53.3582 60.4056 67.8421 75.6717 83.8938 92.5083 NaN NaN”
如何将NaN, NaN,92.4003 83.7985 等浮点数据提取出来啊?
谢谢
------解决方案--------------------
用CString类的Find函数查找空格来取每一个数字字符串,再用atof函数来转换。如果NaN Nan是固定的,就更好办了,直接越过这8个字符(加2个空格),如果数据头不是固定这两个字母,就需要再加个判断是数字还是字母的函数,这个函数也是普通C语言里的函,我忘了
------解决方案--------------------
用Tokenize方法,进行字符串解析,然后再用atof方法
CString str(_T("NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507"));
CString resToken;
int curPos = 0;
resToken= str.Tokenize(_T(" "),curPos);
while (resToken != _T(""))
{
_tprintf_s(_T("Resulting token: %s\n"), resToken);
resToken = str.Tokenize(_T(" "), curPos);
};
RT
请问用MFC的XMLNODE->text提取单个节点的文本内容之后,如何将其中的双精度浮点数据提取出来?
例如
<line>NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507 40.3951 34.5307 29.0579 23.9764 19.2851 14.9846 11.0768 7.5566 4.4237 1.6815 -0.6687 -2.6264 -4.1958 -5.3758 -6.1628 -6.5570 -6.5568 -6.1649 -5.3812 -4.2050 -2.6363 -0.6784 1.6692 4.4094 7.5451 11.0732 14.9916 19.2990 23.9957 29.0830 34.5635 40.4363 46.7010 53.3582 60.4056 67.8421 75.6717 83.8938 92.5083 NaN NaN</line>
读入的文本内容为字符串:
“NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507 40.3951 34.5307 29.0579 23.9764 19.2851 14.9846 11.0768 7.5566 4.4237 1.6815 -0.6687 -2.6264 -4.1958 -5.3758 -6.1628 -6.5570 -6.5568 -6.1649 -5.3812 -4.2050 -2.6363 -0.6784 1.6692 4.4094 7.5451 11.0732 14.9916 19.2990 23.9957 29.0830 34.5635 40.4363 46.7010 53.3582 60.4056 67.8421 75.6717 83.8938 92.5083 NaN NaN”
如何将NaN, NaN,92.4003 83.7985 等浮点数据提取出来啊?
谢谢
------解决方案--------------------
用CString类的Find函数查找空格来取每一个数字字符串,再用atof函数来转换。如果NaN Nan是固定的,就更好办了,直接越过这8个字符(加2个空格),如果数据头不是固定这两个字母,就需要再加个判断是数字还是字母的函数,这个函数也是普通C语言里的函,我忘了
------解决方案--------------------
用Tokenize方法,进行字符串解析,然后再用atof方法
CString str(_T("NaN NaN 92.4003 83.7985 75.5874 67.7663 60.3360 53.2973 46.6507"));
CString resToken;
int curPos = 0;
resToken= str.Tokenize(_T(" "),curPos);
while (resToken != _T(""))
{
_tprintf_s(_T("Resulting token: %s\n"), resToken);
resToken = str.Tokenize(_T(" "), curPos);
};