我应该编写一个程序,从两个文件中获取数字,然后按升序将它们输出到另一个文件。程序编译时没有任何错误,并按原样创建输出文件,但文件为空。我做错了什么?
第一档:
C:\wamp\bin\mysql\mysql5.6.17\bin\mysqld.exe --console
第二档:
1
3
5
7
9
-
2
4
6
8
答案 0 :(得分:3)
这里有一个问题:
instream.open("merge1");
...
instream.open("merge2");
您打开instream
两次。您可能打算打开instream
然后instream2
文件准备好后,只需将内容读取到std::vector
并按如下方式对其进行排序:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
...
std::vector<int> vec;
int i;
while (instream1 >> i)
vec.push_back(i);
while (instream2 >> i)
vec.push_back(i);
//sort the values
std::sort(vec.begin(), vec.end());
//output
for (auto n : vec)
outstream << n << "\n";
答案 1 :(得分:1)
Barmak Shemirani有正确的答案。
一个小的改进是使用std:set<>
,它已经是弱排序的 - 所以它不需要单独的排序步骤。
std::set<int> numbers;
int i;
while (instream >> i)
numbers.insert(i);
while (instream2 >> i)
numbers.insert(i);
for (auto n : numbers)
outstream << n << "\n";