c++ - 逐行复制文件

标签 c++ loops while-loop eof

我有一个循环问题,我想做的是逐行复制一个文件。 我使用了这段代码,但它在输出文件中多写了一个括号和一行。

void copyStringNewFile(ifstream& inData,ofstream& outData)
{
string x = "";

while (inData)
{
    getline(inData, x);
    outData << x << '\n';
}
}

也许我可以删除该行:

string x = "";

在 while 条件下我尝试了一些解决方案:

while (!inData.eof())    // Works similar to while (inData)

while (inData >> x)      // Delete a lot of lines

非常感谢,如果你能解释一下eof在哪里有用(因为在循环中它似乎没用)。

最佳答案

您没有检查 getline() 的返回值。失败时,不应复制。 顺便说一句,你还依赖于源文件中的最后一个 '\n',否则你将无法复制最后一行。

这是一个正确监控成功读取的表单:

void copyStringNewFile(ifstream& inData, ofstream& outData)
{
    char ch;
    while (inData >> ch)
    {
        outData << ch;
    }
}

或者,如果您准备好使用更高级的表单:

void copyStringNewFile(ifstream& inData, ofstream& outData)
{
    outData << inData.rdbuf();
}

关于c++ - 逐行复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22580191/

相关文章:

c++ - "error LNK2001: unresolved external symbol"

C:组合 while 和 if 语句

带有 while 循环的 php 回显表

java - 当条件被 Action 监听器改变时中断 while 循环

c++ - 使用反向冒泡排序对数据结构数组进行字母排序

c++ - 是否可以使用另一个 lua 文件中定义的表,而该文件不需要作为当前文件中的模块?

C++ 获得整数除法和余数的最佳方法

c# - 如何迭代两个集合?

c - 链表删除并返回第一个元素

c++ - 循环效率 - C++