读书人

文件处理又有麻烦了- -解决办法

发布时间: 2012-02-19 19:43:38 作者: rapoo

文件处理又有麻烦了- -~~~~~~~~~
现在我有一个input.txt的文件,内容如下

第一个书柜
类型:科普
数量:121
管理人员:李四 钱八

第二个书柜
类型:人文
数量:581
管理人员:赵五 孙六 王七

第三个书柜
类型:历史
管理人员:张三 钱八 赵五 孙六

第四个书柜
类型:地理
数量:1068
管理人员:王羲之 黑牛 达芬奇
====================================================
输出 output.txt:
第一个书柜, 科普, 121, 李四 钱八
第二个书柜, 人文, 581, 赵五 孙六 王七
第三个书柜, 历史, 0, 张三 钱八 赵五 孙六
第四个书柜, 地理, 1068, 王羲之 黑牛 达芬奇


但是今天又遇到问题了

现在我有一个input.txt的文件,内容如下

第一个书柜
类型:科普
数量:121
管理人员:李四 钱八

第二个书柜
类型:人文
数量:581
管理人员:赵五 孙六 王七

第三个书柜
类型:历史
管理人员:张三 钱八 赵五 孙六

第四个书柜
类型:地理
数 量:1068
管理人员:王羲之 黑牛 达芬奇


主要的区别在于 "数量 "那个地方有的中间多了一个空格

我想把输出的 output.txt 和上面的输出一样

用昨天 jixingzhong(瞌睡虫星辰) 的方法
我自己试着把程序给改成:
===========================================
#include <fstream>
#include <string>
#include <iostream>
using namespace std;

int main()
{
ifstream ifile( "input.txt ");
ofstream ofile( "output.txt ");
string line, tmpa, tmpb ;

while (!ifile.eof())
{
getline(ifile, line); //第X个书柜
ofile < <line < < ", ";

getline(ifile, line); //类型
ofile < <line.substr(6) < < ", "; // "类型: "长度为 6

getline(ifile, line); //数量
tmpa = "数量: ";
tmpb = "数 量: ";
if (line.find(tmpa) != string::npos)
{
if (line.find(tmpb) != string::npos)
{
ofile < <line.substr(7) < < ", ";

getline(ifile, line); //管理人员
ofile < <line.substr(10) < <endl;
}
else
{
ofile < <line.substr(6) < < ", ";

getline(ifile, line); //管理人员
ofile < <line.substr(10) < <endl;
}
}
else //当前读取的line就是 管理人员 信息
{
ofile < <0 < < ", ";
ofile < <line.substr(10) < <endl;
}
getline(ifile, line); //读取空行
}
return 0;
}

============================================

程序没有问题,
但是如果遇见input.txt文件里面,只要 "数量 "中间有空格,就不能得到结果
我不知道怎么改了- -~~
请各位大大帮我看看怎样修改啊

[解决办法]
if (line.find(tmpa) != string::npos)
{
if (line.find(tmpb) != string::npos)
{
...
==》
if ( (line.find(tmpa) != string::npos) | (line.find(tmpb) != string::npos) )
{
...

{}配对自己调整一下
[解决办法]
if (line.find(tmpa) != string::npos)


{
if (line.find(tmpb) != string::npos)
{

这样是 & 的关系,
实际上应该是 | 的关系
if ( (line.find(tmpa) != string::npos) | (line.find(tmpb) != string::npos) )
就可以了 ...

读书人网 >C++

热点推荐