C++;新手:我的循环应该更改字符串,然后将字符串打印到文件中。但它正在增加字符串 我编写了C++代码来执行计算。代码中有一个循环。在每个循环结束时,我想:

C++;新手:我的循环应该更改字符串,然后将字符串打印到文件中。但它正在增加字符串 我编写了C++代码来执行计算。代码中有一个循环。在每个循环结束时,我想:,c++,string,streaming,iostream,C++,String,Streaming,Iostream,1) 获取时间、计算结果 2) 为文件命名。名称应包含时间 3) 将文件名打印到外部文件中。每个新循环都应该覆盖上一个循环中的文件名 我遇到的第一个问题是无法删除旧文件名。因此,当我完成计算时,名称是(例如): 重新启动文件的计算\u 0.0005476490.004925880.01763170.04375820 而不是: 重新启动文件的计算\u 04375820 我已经更新了这个问题,纳入了Mat的建议。谢谢你。但是现在我在外部文件中什么都没有了。有人能看出我哪里做错了吗?如果您能给我提些建

1) 获取时间、计算结果

2) 为文件命名。名称应包含时间

3) 将文件名打印到外部文件中。每个新循环都应该覆盖上一个循环中的文件名

我遇到的第一个问题是无法删除旧文件名。因此,当我完成计算时,名称是(例如): 重新启动文件的计算\u 0.0005476490.004925880.01763170.04375820

而不是: 重新启动文件的计算\u 04375820

我已经更新了这个问题,纳入了Mat的建议。谢谢你。但是现在我在外部文件中什么都没有了。有人能看出我哪里做错了吗?如果您能给我提些建议,我将不胜感激

//上面的循环:
std::string filename=“calculationForRestartFile”;//所有文件应具有的文件名的一部分
最短时间流中的流文件名;
std::string convertedToString;//这一点和下面的一行:
std::stringstream storeNumberForConversion;//用于将循环编号/时间存储为字符串
//内部循环:

storeNumberForConversion问题是这一行正在循环内添加到您的
stringstream
。您永远不会重置其内容

storeNumberForConversion << global_time << flush;

为什么不直接将时间写入文件?

非常感谢Charles!我执行了你的第一个建议(移动声明)。现在,外部文件包含一个名称列表——每次一个。每次的名字都是正确的。我仍然需要弄清楚如何去掉以前的名称(以前的循环);由于某些原因,这些未被覆盖。对
str()
的调用中不需要参数。我发现没有(看起来很像是一个类似于
reset()-like的函数)。另外,我一直认为“重新声明”(就像我现在对storeNumberForConversion所做的那样)会很糟糕。如果你有时间,你能对此发表评论吗?我的意思是,重新声明的风格好吗?我不是在抱怨——我很高兴它能工作——但我很好奇。谢谢!@rubenvb:clear?但我想调用接受参数的
.str
;不接受参数的会做完全不同的事情。@Ant:为了清楚起见在可读性方面,通常最好使用所需的最小范围来声明内容。在循环上下文中,这也意味着您不必担心对象可能保留的任何虚假旧状态,而这正是您遇到的问题。如果重复创建或删除对象时出现性能问题,请不要担心当它可以在循环内定义作用域时,可能值得考虑在循环外声明和对象。嗨,Marty。我不确定我在这里是否理解正确…我需要将文件名写入外部文件,而不仅仅是时间。外部文件名必须包括“calculationForRestartFile\ux”然后是时间。听起来很奇怪,我知道……但我正在使用的一些商业/外部代码需要它。很抱歉不够清晰,我的意思是尝试一些类似于
filenameathighestimestream的东西,在另一个答案的注释中尝试你的问题,重新声明一个变量只是用默认构造函数。我不认为这种方法和每次迭代调用一些擦除方法之间有实质性的区别。
storeNumberForConversion.str( std::string() );