C++中如何将两个 txt文件 合并 并用另外一个txt文件显示出来

非常急需解决!!
2024-11-16 01:33:08
推荐回答(1个)
回答(1):

  1. 首先你要设计好数据结构把每一条记录抽离出来,要求分理出每个字段

  2. 然后分别读取要求合并的两个数据文件,可以直接在读的时候合并,也可以读完之后再合并

  3. 把合并后的数据再按原来的格式写出到目标文件即可


类似的代码设计如下:

// 每一行的数据记录信息
typedef struct _my_info
{
    int     nDriverId;
    string  strInfo18;
    string  strInfo19;
    string  strInfo20;
    string  strInfo21;
    string  strInfo22;
    string  strInfo23;
}MyInfo;

//存储从两个文件读入的数据
map mapIn;

ifstream fIn;
string strLine;
string strCarId;
MyInfo  oLineInfo;

fIn.open("data1.txt");
while(getline(fIn,strLine))
{
    // 处理分割出每个字段,获取到车牌号strCarId和具体信息oLineInfo
    // 把信息存起来
    mapIn[strCarId] = oLineInfo;
}
fIn.close();

fIn.open("data2.txt");
map::iterator ite = mapIn.end();
while(getline(fIn,strLine))
{
    // 处理分割出每个字段,获取到车牌号strCarId和具体信息oLineInfo

    // 把已经存好的该对应记录取出来
    ite = mapIn.find(strCarId);
    if (ite != mapIn.end() )
    {
        MyInfo oLineInfo2 = ite->second;
        // 把已有的信息合并到oLineInfo1中

        // 合并每个字段
        if( oLineInfo.strInfo18.empty() && !oLineInfo2.strInfo18.empty())
        {
            oLineInfo.strInfo18 = oLineInfo2.strInfo18;
        }

        // 依次次合并其他字段
        // ...

    }

    // 把已经合并的信息存起来
    mapIn[strCarId] = oLineInfo;
}
fIn.close();

// 经过上述操作,现在所有的信息已经存到mapIn中了,直接把该信息输出到所需的文件就可以了
ofstream fOut;

fOut.open("rst.txt", ios::out | ios::trunc);

// 写入标题

// 写入记录

ite = mapIn.begin();
while( ite != mapIn.end() )
{
    // 写入一条记录
    strLine = ite->first; //车牌号
    strLine += "    ";    // 分割符之类的
    strLine += ite->second->strInfo18;    // 其他字段
    strLine += ite->second->strInfo19;    // 其他字段
    // ...

    strLine += "\n"; // 换行符
    fOut.write(strLine);

    ite++;
}
fOut.close();