私は2つのファイルの番号を取り、昇順に別のファイルに出力するプログラムを作成することになっています。プログラムはエラーなしでコンパイルし、必要に応じて出力ファイルを作成しますが、ファイルは空です。私は間違って何をしていますか?C++マージファイルの問題
まずファイル:
1
3
5
7
9
セカンドファイル:
2
4
6
8
-
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void merging(ifstream& instream, ifstream& instream2, ofstream& outstream);
int main()
{
ifstream instream, instream2;
ofstream outstream;
instream.open("merge1");
if (instream.fail())
{
cout << "Failed to open input file.\n";
exit (1);
}
instream.open("merge2");
if (instream2.fail())
{
cout << "Failed to open input file.\n";
exit (1);
}
outstream.open("merge3");
if (outstream.fail())
{
cout << "Failed to open output file.\n";
exit (1);
}
merging(instream, instream2, outstream);
instream.close();
instream2.close();
outstream.close();
cout << "Finished merging files.\n";
return 0;
}
void merging(ifstream& instream, ifstream& instream2, ofstream& outstream)
{
int number1, number2;
if (instream >> number1)
if(instream)
{
if (instream2 >> number2)
{
while (instream && instream2)
{
if (number1 <= number2)
{
outstream << number1 << " ";
}
if (! (instream >> number1))
{
outstream << number2 << " ";
}
}
else
{
outstream << number2 << " ";
if (! (instream >> number1))
{
outstream << number1 << " ";
}
else
}
}
}
else
{
outstream << number1 << " ";
}
}
while (instream >> number1)
{
outstream << number1 << " ";
}
while (instream2 >> number2)
{
outstream << number2 << " ";
}
}
標準の 'sort'ツールにはすでにこの機能があります。 –
ファイル1から['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)に読み込み、ファイル2から同じベクトルに読み込みます。 ['std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)でベクトルを実行します。ベクトルをファイル3に書き込みます。 – user4581301
デバッガは優れたツールです。あなたが1つを使用することを学んでいない場合、これは素晴らしい機会になります。個々のステートメントを個別に実行する*変数の値を監視する*。 StackOverflowに投稿する前に1つを使うことを強くお勧めします。 –