从文本C ++中提取字符串数据

时间:2012-08-01 22:30:49

标签: c++ visual-c++

我目前正在编写一个需要从文本文件中提取字符串和数字数据的c ++程序。数据的格式如下;

3225 C9+     ELECTR  C8      C        *      1.00E-6  -0.30       0.0

第一个条目是整数,接下来的5个条目是字符串,最后3个是浮点数。没有字符串长度超过7个字符。

我正在逐行读取文件,然后使用;

提取数据
sscanf(ln.c_str(),"%d  %s  %s  %s  %s  %s  %e  %e  %e",
&rref[numre],&names[numre][0],&names[numre][1],&names[numre][2],&names[numre][3],
&names[numre][4],&nums[numre][0],&nums[numre][1],&nums[numre][2]);

这很好用,直到我遇到像这样的一行;

  3098 SIC2H3+ ELECTR  SIC2H2  H        *      1.50E-7  -0.50       0.0

其中一个托盘是完整的7个字符长。在这种情况下,我得到了;

names[3097][0] = "SIC2H3+ELECTR"

names[3097][1] = "ELECTR"

任何人都有任何想法......他们将非常感激!!

1 个答案:

答案 0 :(得分:6)

最可能出现的问题是names的声明:如果你声明它持有七个或更少的字符,并且忘记分配空间来终止零,你就会得到你所描述的结果。< / p>

char names[MAX][4][7]

将有足够的空间用于长度为6或更短的字符串;对于长度为7的字符串,您需要

char names[MAX][4][8]