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

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

本文关键字:显示 一行 函数 一直 最后 Ofstream      更新时间:2023-10-16

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

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();
}

好的,所以只是了解发生了什么,它会读取名为 text 的文件的上下文.txt 在这个文件中有 3 行是(test、test2、test3(。 所以它读取一行并将其发送到函数,然后返回,然后它为第二行执行,依此类推。一旦它到达最后一行,cout 函数就会读取此内容

SHA256('测试'(: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");