从其他两个文件中创建一个分类整数的文件
creating a file of sorted integers from two other files
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream file1,file2,file3,file4;
int num1,num2,num,temp=0,a[20];
file1.open("source1.txt",ios::in);
file2.open("source2.txt",ios::in);
file3.open("sample.txt",ios::out|ios::in|ios::trunc);
file4.open("target.txt",ios::out|ios::in|ios::trunc);
if(file1.is_open()&&file2.is_open()&&file3.is_open()&&file4.is_open())
{
while(file1)
{
file1>>num1;
file3<<num1<<'n';
}
file1.close();
while(file2)
{
file2>>num2;
file3<<num2<<'n';
}
file2.close();
file3.seekg(0);
int i=0;
while(file3)
{
file3>>num;
a[i]=num;
i++;
}
for(int j=0;j<i-1;j++)
{
if(a[j]<a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
file3.close();
for(int j=0;j<i;j++)
file4<<a[j]<<'n';
file4.close();
}
else
cerr<<"nError!";
return 0;
}
source1和source 2包含必须复制到目标的整数,应分类它们。我无法使用上述代码对它们进行分类。另外,我看到来自source1和source2的最后一个整数被复制了两次。
如果可能的话,通常要使用标准库中内置的算法,因此(例如)进行排序,可以使用std::sort
。
std::ifstream in1("source1.txt");
std::ifstream in2("source2.txt");
std::vector<int> numbers;
std::copy(std::istream_iterator<int>(in1), {}, std::back_inserter(numbers));
std::copy(std::istream_iterator<int>(in2), {}, std::back_inserter(numbers));
std::sort(numbers.begin(), numbers.end());
std::ofstream out("target.txt");
std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<int>(out, "n"));
如果每个输入文件中的数字进行排序,因此您只需要合并两个排序的流,就可以使用std::merge
:
std::ifstream in1("source1.txt");
std::ifstream in2("source2.txt");
std::ofstream out("target.txt");
std::merge(std::istream_iterator<int>(in1), {},
std::istream_iterator<int>(in2), {},
std::ostream_iterator<int>(out, "n"));
您可以尝试从任何一个文件中交替阅读,具体取决于以前的数字较小:
file1 >> num1;
file2 >> num2;
while(file1 || file2)
{
if (!file2)
{
file3 << num1 << "n";
file1 >> num1;
}
else if (!file1)
{
file3 << num2 << "n";
file2 >> num2;
}
else if (num1 < num2)
{
file3 << num1 << "n";
file1 >> num1;
}
else
{
file3 << num2 << "n";
file2 >> num2;
}
}
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 挂起和取消挂起一个文件DLL
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何打开并写入一个名称取自C++中字符串的文件
- 构建一个由C和C++文件组成的库
- c++多进程编写一个唯一的文件
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何将class.cpp和class.hpp编译为一个.o文件
- 写入文件会产生一个空文件或根本没有文件
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- Pantheios 不使用 MFC 应用程序写入一个文件(一个 exe + 两个 DLL)
- 在C++中一次读取一个文件一个int
- 输入/输出文件(一个字母的大写)
- 如何使用两个预编译的头文件.一个用于托管代码,另一个用于非托管代码.xxx.PCH不是一个有效的预编译头文件