从文件中读取
Reading From Files
我有点好奇我是不是走错了路。我试图从两个不同的列表中读取数字,对数字进行排序,然后将所有数字输出到第3个文件。我知道getline可能不是最好的选择,但我仍然想使用它。
list1 = 1,4,5,18
list2 = 2,3,15,16
输出= 1,2,3,4,5,7,15,16 -我应该得到什么
我实际得到的- 1,3,5,16
下面是一段代码
void sorted(std::ifstream &ifs, std::ifstream &ifs1, std::ofstream &ofs){
//while ((!ifs.eof()) & (!ifs1.eof())){
//int number = 0;
//int number1 = 0;
std::string num1;
std::string num2;
//getline(ifs, num1);
//getline(ifs1, num2);
while(std::getline(ifs, num1) && std::getline(ifs1, num2)){
int number = 0;
int number1 = 0;
std::stringstream ss1;
std::stringstream ss2;
ss1 << num1;
ss2 << num2;
ss1 >> number;
ss2 >> number1;
//while(ss1 >> number && ss2 >> number1)
//{
if (number < number1){
ofs << number << std::endl;
ss1 >> number;
std::cout << "am i doing this right?";
}
else{
ofs << number1 << std::endl;
ss2 >> number1;
}
}
}
getline
是最好的选择,毫无疑问,它总是比使用eof
的注释行代码更好。正如Joachim在评论中提到的,您可以首先将数字从file读入std::vector容器,然后在vector之上调用std::sort算法。
每对迭代中丢弃一个数字,因为您的if (number < number1) ... else
块只写入两个数字中的一个。
试试……
if (number < number1){
ofs << number << std::endl;
ofs << number1 << std::endl;
...
}
else{
ofs << number1 << std::endl;
ofs << number << std::endl;
...
}
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中