(我明白了!)好的,请注意我对C ++和编程很新。该程序的最终目标是打开文本文件,编辑文本文件中的数字(正方形正数和双底数),创建新文件并在第一行打印新文件的名称,然后打印新文件新文件中的值。程序需要在原始文件中遇到-99后停止,但不能在更改它并将其打印到新文件之前停止。
这是我最初的烂摊子:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
int value;
ofstream myfile;
myfile.open("exampleFile.txt"); // Create file
myfile << "exampleFile.txt\n"; // Print file name in file
string line;
ifstream farrisFile;
farrisFile.open("Farris.txt");
if (farrisFile.is_open())
{
(farrisFile >> value);
while (value > 0)
{
myfile << value * value << endl;
}
do
{
value * 2;
}
while (value > -99);
}
myfile.close();
farrisFile.close();
return 0;
}
这是正确的程序,除了它最后两次打印-198,但这是一个简单的修复。问题是我正在阅读的文件位于错误的位置,-1717986920正在下溢。 这里的程序更加精致。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int value; // Establish a variable to use for file values
ifstream farrisFile;
farrisFile.open("Farris.txt"); // Open Farris.txt
ofstream myfile;
myfile.open("TristenStokes.txt"); // Create file
myfile << "TristenStokes.txt\n"; // Print file name in file
(farrisFile >> value); // Read first line of Farris.txt
while (value > -99) // Establish sentinel
{
while (value > 0)
{
myfile << value * value << endl;
farrisFile >> value;
break;
}
while (value <= 0)
{
myfile << value * 2 << endl;
farrisFile >> value;
break;
}
continue;
}
if (value == -99)
{
myfile << value * 2 << endl;
}
myfile.close();
farrisFile.close();
return 0;
}
答案 0 :(得分:1)
您可以通过编写farrisFile >> value
从文件中读取整数。请注意,错误位于行while(value > 0)
中,因为如果您从文件中读取的值为正,则它将始终保持为正值。您永远不会在循环内再次从文件中读取新值。导致无限循环。你想要的是从文件读取一个整数,只要你没有得到-99。可能这就是你想要的。
while(1){
farrisFile >> value;
if(value < 0){
myFile << 2*value << endl;
if(value == -99) break;
}
else{
myFile << value * value << endl;
}
}