求C++高手帮忙修改下代码,谢谢!!急啊!!

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:28:15
就是编一个程序,将下面一团混乱的数据
TIME:
10: 49: 51

No:
118
CO2: 2
52 251 2
50 252 2
52 251 2
50 251
R
H: 079 079 079 08
0 080 08
0 080 07
9
TC: 32.
9 32.9 32.9 32.9
32.9 32
.9 32.9 32.9
TL:
32.8 32.
8 32.8 3
2.8 32.8
32.8 32
.8 32.8

PA: 0067 0044 0043 0051 0064 0057 0045 0053
Pn: 004.5 004.5 -09.1 000.0 004.5 004.5 001.5 005.0
T
r: 000.0
000.0 00
2.6 000.0 000.0
000.0 000.4 001.
0
We: 00.
0 00.0 -3.5 00.0
00.0 00
.0 -0.6
01.3
Con
d: 00.0 00.0 00.1
00.0 00
.0 00.0
00.0 0.0
2
整理成下边的格式:

TIME: 10: 49:51
No: 118
CO2: 252 251 250 252 252 251 250 251
RH: 079 079 079 080 080 080 080 079
TC: 32.9 32.9 32.9 32.9 32.9 32.9 32.9 32.9
TL: 32.8 32.8 32.8 32.8 32.8 32.8 32.8 32.8
PA: 0067 0044 0043 0051 0064 0057 0045 0053
Pn

关键问题是判断什么时候输入换行和什么时候输入空格。
从数字转为字母时需要输入换行,而最后一个数字的长度等于要求的长度时需要输入空格。

//下面的函数获取一个记录里每个数字要求的长度
int getNumLen(ifstream inFile) //获得每个记录里每个数字的长度,如果无法获得,则返回0
{
int len = 0;
int firstLine = 1;
size_t found;
string value, number;

while (inFile.good())
{
inFile.get(value); //读取一行
if (isalpha(value[0]) && !firstLine) break; //读取到下一个记录还没找到本记录的每个数字的长度
firstLine = 0; //本记录之后应该都是数字了
found = value.find(' '); //搜索第一个空格
if (found != npos) {
number = value.substr(found + 1); //得到第一个空格之后的字串
found = number.find(' '); //搜索第二个空格
if (found != npos) {
len = found; //得到每个数字的长度
break;
}
}
}
return len;
}

//这个函数检测一个含有数字的一行是否需要在末尾添加空格
int needSpace(string value, int numLen)
{
if (numLen == 0) return 0;
size_t found;
found = value.find_last_of(' ');
if ((found != npos) && ((value.size - found -1) < numLen)) ret