ofstream 一直给我函数的最后一行而不是显示所有内容

ofstream keeps giving me the last line of the function instead of showng everything

所以我一直在尝试找出一种方法,让函数输入文件中写入的任何内容并输出到 Sha-256 函数中。也许我为什么要那样做?很简单,我只是想自学 C++ 中的事物是如何工作的,但是它显示了函数 ofstream 的最后一行。这是我的主要功能

ifstream input ("/home/findme/Desktop/text.txt"); // opens text.txt file.
string s;
while (getline (input, s))
{ 
    // loop to read every line one by one of the file.
    string c = s;               // enters function to be converted.
    string output1 = sha256(c); // gives back the value of the string.
    cout << "sha256('"<< c << "'):" << output1 << endl; //displays the results.   
    ofstream outfile ("/home/findme/Desktop/result.txt");
    outfile << "sha256('"<< c << "'):" << output1 << endl; 
    outfile.close();
}

ok 所以只是了解发生了什么,它读取名为 text.txt 的文件的上下文,该文件中有 3 行(test、test2、test3)。所以它读取一行并将其发送到函数,它 returns 然后它为第二行执行它,依此类推。一旦到达最后一行,cout 函数将读取此

sha256('test'):9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

sha256('test2'):60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752

sha256('test3'):fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13

没错。 cout 函数没有任何问题,但是当我尝试将其放入名为 result.txt 的外部文件时,它显示

sha256('test3'):fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13

这就是问题所在,似乎它所做的只是编写了最后一个函数。我试图将 ofstream 的位置更改为在循环外部或 cout 函数之前,它给出了同样的问题,我也尝试了一个循环并且它给出了同样的问题。它只是重复 sha256('test3')。

现在我知道它显然很容易修复,但我没有看到,因此有人可以帮助我吗?我希望它准确显示 cout 显示的内容。 (没有错误消息,编译没有问题)。谢谢

您正在循环中创建 ofstream outfile。这意味着它会在循环中的每次迭代中重新创建。如果将此行移到示例代码的顶部,它应该可以工作:

ofstream outfile ("/home/findme/Desktop/result.txt");