C ++合并文件的麻烦

时间:2016-04-16 00:33:27

标签: c++

我应该编写一个程序,从两个文件中获取数字,然后按升序将它们输出到另一个文件。程序编译时没有任何错误,并按原样创建输出文件,但文件为空。我做错了什么?

第一档:

C:\wamp\bin\mysql\mysql5.6.17\bin\mysqld.exe --console

第二档:

1
3
5
7
9

-

2
4
6  
8

2 个答案:

答案 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";