這應該是30秒鐘計入一個txt文件。但它幾乎沒有使txt本身。我究竟做錯了什麼?或者是在循環中C++只是無法進行文件處理。 現在只是在文本文件中C++在一個循環內寫入一個文件
for (i = 30; i >= 0; i--)
{
ofstream file;
file.open("asd.txt");
file << i;
file.close();
Sleep(1000);
}
這應該是30秒鐘計入一個txt文件。但它幾乎沒有使txt本身。我究竟做錯了什麼?或者是在循環中C++只是無法進行文件處理。 現在只是在文本文件中C++在一個循環內寫入一個文件
for (i = 30; i >= 0; i--)
{
ofstream file;
file.open("asd.txt");
file << i;
file.close();
Sleep(1000);
}
移動ofstream的出這樣的循環:
// ^^ There is the useless stuff
ofstream file;
for (i=0;i<maxs;i++)
{
system("cls");
secondsLeft=maxs-i;
hours=secondsLeft/3600;
secondsLeft=secondsLeft-hours*3600;
minutes=secondsLeft/60;
secondsLeft=secondsLeft-minutes*60;
seconds=secondsLeft;
cout << hours<< " : " << minutes<< " : " << seconds << " ";
file.open ("countdown.txt", ios::trunc);
file << hours << " : " << minutes<< " : " << seconds;
file.close();
Sleep(1000);
}
大聲笑,它有很多工作:D –
首先,你與每一個循環覆蓋輸出文件「asd.txt」。您只需爲每個會話執行一次文件指針(在循環之外)就可以創建並初始化一個文件指針。關閉文件指針也是一樣。
ofstream file; //Create file pointer variable
file.open("asd.txt"); //Initialize 'file" to open "asd.txt" for writing
for (i = 30; i >= 0; i--)
{
file << i; //You'll need to add a new line if you want 1 number per line
Sleep(1000); //Assuming this is in microseconds so sleep for 1 second
}
file.close(); //close the file pointer and flushing all pending IO operations to it.
基本上你做什麼你創建的對象代表文件,每次你試圖打開它。 如果每次使用新引用(對象)訪問文件,它都會寫入新數據並刪除以前的數據。 試着這樣做:
int main()
{
ofstream file;
file.open("test.txt");
for (int i = 30; i > 0; --i)
{
file << i << endl;
Sleep(1000);
}
file.close();
system("pause");
return 0;
}
你可以聲明ofstream
退出循環。
如果您必須在循環內使用它,請使用附加模式。
file.open("test.txt", std::ofstream::out | std::ofstream::app);
「但它幾乎沒有使txt本身」這是什麼意思? – 0x499602D2
你是說你只是把文件裏面的文字變成'0'?那是因爲你不是在追加模式;將openmode'std :: ios_base :: app'添加到'open'。 – 0x499602D2
我想讓txt覆蓋自己 –