试图写入文件,但只打印一次
Trying to write to file but only prints once
我正在写一个小物理引擎,我正在学习如何写入文件,我想做的就是以相同的方式打印与 angle.txt
文件的角度输出。这是我的程序:
int main() {
ofstream myFile;
myFile.open("angle.txt");
cout << "Insert a lanuch Angle (theta): ";
cin >> thetaDegrees;
cout << "Insert a launch height: ";
cin >> yOld;
cout << "Insert an initial velocity: ";
cin >> initialVelocity;
cout << "Time (DeltaT) in seconds: ";
cin >> totalT;
for (double deltaTime = 0.0; deltaTime < totalT; deltaTime += 0.1) {
const double squared = deltaTime * deltaTime; // squared constant for deltaTime squared
theta = thetaDegrees * PI / 180; // converts theta to a degrees value
// apply initialV to velocity
velocity = initialVelocity + 9.8 * time;
yNew = yOld + velocityY * deltaTime - gravitiyHalf * (squared); // calculates Y
velocityY = velocity - 9.8 * deltaTime; // includes gravity to Y
angle = atan2(yNew, xNew) * 180 / PI; // convert angle to degrees
this_thread::sleep_for(chrono::seconds(1)); // sleeps for 1 second each loop
cout << "nHeight: " << yNew << endl;
cout << "Angle: " << angle << endl;
myFile << angle; // it displays the first value but nothing else!
myFile.close();
yOld = yNew;
}
}
运行此程序时,该文件仅显示与文件的角度值的第一个值,之后它忽略了其余的。如何修复此问题,以便angle.txt
文件显示角度的每个值?
编辑:我也尝试使用for循环外的myFile.close();
,但这行不通。
流通常被缓冲。结果之一是,写入流到流的字符直到缓冲区被冲洗。
才出现在目的地中。如果您不采取任何措施冲洗缓冲区,那么在填充缓冲区之前,书面字符才会出现,考虑到您写入文件的速率,这将花费很长时间。
您需要执行以下操作之一:
// Option 1
myFile << angle << flush;
// Option 2
myFile << angle;
myFile.flush();
如果您实际上是指每个输出都在单独的行上,而您只是忘记写出新线,那么还有另一个选项,因为这正是endl
的用例
// Option 1
myFile << angle << endl;
// Option 2
myFile << angle << 'n' << flush;
// Option 3
myFile << angle << 'n';
myFile.flush();
始终尝试在隔离中开发新功能。尝试以下操作:
int main() {
ofstream myFile;
myFile.open("angle.txt");
for (double deltaTime = 0.0; deltaTime < 2.0; deltaTime += 0.1) {
cout << "time: " << deltaTime << endl;
myFile << deltaTime << endl;
}
myFile.close();
}
如果失败,我们可以尝试解决这个更简单的问题。如果成功,您可以将一些复杂性重新放在...
相关文章:
- 我的字符串数组一次打印出前两个字符串
- 为什么完整的字符串没有一次打印,但是当我尝试逐个字符打印时
- 每(n)秒打印一次的程序
- 在多重映射中打印一次重复值
- 我需要线程函数在不停止实际程序的情况下,每2秒打印一次随机数
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 在 c++ 中,在 for 循环中,你如何打印出一次字符串
- 为什么一次打印一个字符比提前连接它们慢
- 我正在计算的序列(Hailstone)需要打印一次时两次打印
- 如何仅使输出打印一次
- 如何将.txt文件中的多维数组放入代码中,并一次打印一行
- 如何一次打印带有空格的整个wchar_t?(C++)
- 多重继承,如何只打印一次共同祖先的一部分
- 试图写入文件,但只打印一次
- 代码无限循环不能只打印一次
- 在重复调用的函数中,使用cout只打印一次语句
- 如果我没有收到来自客户端的消息,如何每 20 秒打印一次日期时间
- 在递归函数中打印一次变量,该变量会随着每次递归而不断变化
- C++流和迭代器:为什么它只打印一次