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

时间:2018-06-23 16:50:25

标签: c++ ofstream

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

runtime: custom
env: flex

env_variables:
  POSTGRES_HOST: "/cloudsql/<INSTANCE-CONNECTION-NAME>"
  POSTGRES_DB: <MY-POSTGRES-DB>
  POSTGRES_USER: <MY-POSTGRES-USER>
  POSTGRES_PASSWORD: <MY-POSTGRES-PASSWORD>

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 1

好吧,所以只是了解发生了什么,它读取名为text.txt的文件的上下文。在此文件中,共有3行(test,test2,test3)。因此它读取一行并将其发送给函数,然后返回然后对第二行进行处理,依此类推。一旦到达最后一行,cout函数就会读取

sha256('test'):9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

sha256('test2'):60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752

sha256('test3'):fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13

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

sha256('test3'):fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13

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

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

1 个答案:

答案 0 :(得分:0)

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

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