gpt4 book ai didi

c++ - 从文本文件打开和编辑数值数据并将结果放入新文件,C++

转载 作者:行者123 更新时间:2023-11-28 04:55:57 26 4
gpt4 key购买 nike

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

最佳答案

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

关于c++ - 从文本文件打开和编辑数值数据并将结果放入新文件,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47130253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com