我正在寫一個小物理引擎,我正在學習如何寫入一個文件,我想要做的是打印與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();
,但這是行不通的。
當然,寫入角度後不要關閉文件。看看代碼在做什麼,清澈透明。 'myFile <<角度; myFile.close();第一個角度寫入文件,並關閉文件。結束。一臺電腦總是做你告訴它做的事情,而不是你想做它。 –
我認爲,但是當我關閉循環外的文件時,它根本不顯示任何內容。 –
將它們打印到cout時它顯示正確的值嗎? – Harper