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

时间:2017-11-06 05:26:30

标签: c++ fstream ifstream ofstream

(我明白了!)好的,请注意我对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;
}

1 个答案:

答案 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;
    }
}