C++,打开和编辑文本文件中的数字数据,并将结果放入新文件中

Opening and Editing Numerical Data from a Text File and Putting the Result into a New File, C++

本文关键字:文件 结果 新文件 数字 编辑 文本 C++ 数据      更新时间:2023-10-16

(我知道了!)好的,请注意,我对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.txtn";  // 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.txtn";    // 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;
}

通过写入 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;
    }
}