如何将一个文本文件复制到另一个文本文件?

3
我该如何将一个文本文件复制到另一个文件?我尝试了以下方法:
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream infile("input.txt");
    ofstream outfile("output.txt");
    outfile << infile;

    return 0;
}

这样只会在output.txt中留下以下值:0x28fe78

我做错了什么?

2
你需要从输入文件中读取,然后将内容写入输出文件。 - taocp
"<< infile" 只是写出内部文件句柄标识符。例如,在运行代码时,“input.txt”句柄的ID为0x28fe78。 - Marc B
2
尝试使用outfile << infile.rdbuf();代替。 - Jerry Coffin
你能否使用操作系统的函数来完成这个任务,例如Linux中的cat命令? - Thomas Matthews
这是另一个问题的子集:https://dev59.com/0eo6XIcBkEYKwwoYQiO7 - Thomas Matthews
那行代码实际上调用了对 void* 的隐式转换。在 C++11 中,它被替换为 basic_ios::operator bool()。如果 fail() 返回 0,否则返回一些非空指针。所以,实际上是实现定义了打印出的指针是什么。例如,在 libstdc++ 中,如果 !fail(),它会返回 const_cast<basic_ios*>(this) - David G
1个回答

7
你可以将输入文件的内容保存在一个字符串中,并将该字符串打印到输出文件中。 尝试以下操作:
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main ()
{
    ifstream infile("input.txt");
    ofstream outfile("output.txt");
    string content = "";
    int i;

    for(i=0; !infile.eof(); i++)     // get content of infile
        content += infile.get();
    infile.close();

    content.erase(content.end()-1);  //  last read character is invalid, erase it
    i--;

    cout << i << " characters read...\n";

    outfile << content;              // output
    outfile.close();
    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接