C++ C++;合并两个文件输出

C++ C++;合并两个文件输出,c++,linux,C++,Linux,我是C/C++新手。我有两个文本文件,需要合并两个文件的内容 我这样执行g++merge.cc-o merge,创建了两个文本文件,内容如下: file1 : 1 3 5 7 file2 : 2 4 6 8 然后执行以下命令:/merge 10 t1.txt t2.txt 结果是:123456778123456778 #include <iostream> #include <fstream> #include <cstdlib> using namespa

我是C/C++新手。我有两个文本文件,需要合并两个文件的内容

我这样执行
g++merge.cc-o merge
,创建了两个文本文件,内容如下:

file1 : 1 3 5 7
file2 : 2 4 6 8
然后执行以下命令:
/merge 10 t1.txt t2.txt
结果是:
123456778123456778

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

void combine(char s[], char t[], char result[]);

int main(int argc, char* argv[])
{      
    const int MAX = 20;
    char inBuffer1[MAX];
    char inBuffer2[MAX];
    char outBuffer[MAX*2];

    int max = atoi(argv[1]);
    ifstream file1(argv[2]);
    ifstream file2(argv[3]);

    file1.getline(inBuffer1,max);
    file2.getline(inBuffer2,max);

    combine (inBuffer1, inBuffer2, outBuffer);
    cout << outBuffer << endl;
}


void combine(char s[], char t[], char result[])
{
    int i, j, k;

    for (i = j = k = 0; s[i] && t[j]; k++)
    {
        if (s[i] <= t[j])
            result[k] = s[i++];
        else
            result[k] = t[j++];
        cout << result[k];
    }

    //tidy up
    for (; s[i]; )
    {
        result[k] = s[i++];
        cout << result[k++];
    }
    for (; t[j]; )
    {
        result[k] = t[j++];
        cout << result[k++];
    }
    result[k] = 0;
}
#包括
#包括
#包括
使用名称空间std;
无效组合(字符s[],字符t[],字符结果[]);
int main(int argc,char*argv[])
{      
常数int MAX=20;
缓冲区中的字符[MAX];
缓冲区中的字符2[MAX];
炭突出物[MAX*2];
int max=atoi(argv[1]);
ifstream文件1(argv[2]);
ifstream文件2(argv[3]);
file1.getline(inBuffer1,最大值);
file2.getline(inBuffer2,最大值);
联合收割机(进料斗1、进料斗2、出料斗);

cout尝试以下C程序示例(不带
combine
功能):

#包括
#包括
//比较函数对int值进行排序
int比较器(常量无效*p,常量无效*q)
{
int l=*(int*)p;
int r=*(int*)q;
返回(l-r);
}
int main(int argc,char*argv[])
{      
常数int MAX=20;
int缓冲区[MAX*2];
int cnt=0;//缓冲区中的数字
//检查参数
如果(argc<3)
{
printf(“提供正确的参数:一个数字和两个带数字的文件\n”);
返回1;
}
//从2个串联文件中读取
文件*f;
对于(int i=2;i>数据;
v1.推回(数据);
}
file1.close();
而(!file2.eof())
{
文件2>>数据;
v2.推回(数据);
}
file2.close();
//排序(如果文件未排序,则必须进行排序)
排序(v1.begin(),v1.end(),less());
排序(v2.begin(),v2.end(),less());
//保证金
vector res(v1.size()+v2.size());//用于存储结果的向量
合并(v1.begin(),v1.end(),v2.begin(),v2.end(),res.begin(),less());
//打印结果
对于(向量::迭代器i=res.begin();i!=res.end();i++)
{

cout尝试以下C程序示例(不带
combine
功能):

#包括
#包括
//比较函数对int值进行排序
int比较器(常量无效*p,常量无效*q)
{
int l=*(int*)p;
int r=*(int*)q;
返回(l-r);
}
int main(int argc,char*argv[])
{      
常数int MAX=20;
int缓冲区[MAX*2];
int cnt=0;//缓冲区中的数字
//检查参数
如果(argc<3)
{
printf(“提供正确的参数:一个数字和两个带数字的文件\n”);
返回1;
}
//从2个串联文件中读取
文件*f;
对于(int i=2;i>数据;
v1.推回(数据);
}
file1.close();
而(!file2.eof())
{
文件2>>数据;
v2.推回(数据);
}
file2.close();
//排序(如果文件未排序,则必须进行排序)
排序(v1.begin(),v1.end(),less());
排序(v2.begin(),v2.end(),less());
//保证金
vector res(v1.size()+v2.size());//用于存储结果的向量
合并(v1.begin(),v1.end(),v2.begin(),v2.end(),res.begin(),less());
//打印结果
对于(向量::迭代器i=res.begin();i!=res.end();i++)
{

CUT> P> C++标准库有<>代码> STD::合并< < /C> >,按您想要的方式做。基本上打开文件,然后从两个代码> iStRAMAMIATORATER < /C> >到 OrthyType迭代器< /C> >

C++标准库有<代码> STD::合并< /COD>以完成您所希望的。基本上打开T然后,将文件从两个代码< > ISTRAMAMIATORATER < /COD> S合并到 OrthuryTyror < /C> > < /P> < P>下面的C++示例显示了 istrAMyTyror < /C> >和<代码> OrthuryTyror < /C> > Cyto< /Cord>方法:

#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{      
//打开输入文件
ifstream文件1(argv[1]);
ifstream文件2(argv[2]);
//将输入流与文件链接
istream_迭代器it1(文件1);
istream_迭代器it2(文件2);
istream_迭代器eos;//流结束迭代器
//将输出流链接到标准输出
ostream_迭代器oit(cout,“”;/“”=使用空格作为分隔符
//边缘到输出流
合并(it1、eos、it2、eos、oit);
file1.close();
file2.close();
返回0;
}

下面的C++示例显示了 istrAMyTyror < /C>和<代码> OrthuryTyror < /C> > Cyto >:

#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{      
//打开输入文件
ifstream文件1(argv[1]);
ifstream文件2(argv[2]);
//将输入流与文件链接
istream_迭代器it1(文件1);
istream_迭代器it2(文件2);
istream_迭代器eos;//流结束迭代器
//将输出流链接到标准输出
ostream_迭代器oit(cout,“”;/“”=使用空格作为分隔符
//边缘到输出流
合并(it1、eos、it2、eos、oit);
file1.close();
file2.close();
返回0;
}

你的输入文件包含数字还是字母?如果你想对组合数据排序,我想这些是有数字的文件……我是真的吗?是代码> >代码> C++ > <代码>?不能两者兼备!是的。我只包含数字。不是字符。它是C++语言学习的好时机,如何使用代码。“Piraba”,你看的不是C代码。它是C++。你的输入文件包含数字还是字母?如果你想对组合数据排序,我想这些是有数字的文件……我是真的吗?是代码> >代码>还是代码> C++ >代码>?不能两者兼而有之!是的。我只包含数字。不是字符。是C++语言。这是一个学习如何使用调试器的好时机,如何逐行地执行代码,看看会发生什么。@ Piraba,你所展示的不是C代码。它是C++。