在C++中将整数写入.txt文件

3

我是C++的新手,想要将数据(整数)写入.txt文件。数据分为三列或更多列,以便稍后进行进一步使用。我已经成功创建了一个读取项目,但对于写入项目,文件已经被创建但是为空的。我尝试了来自多个网站的代码示例,但没有帮助。

我需要将三个不同方程的结果写入文件中,如下所示:

#include<iostream>
#include<fstream>
using namespace std;

int main ()
{
    int i, x, y;
    ofstream myfile;
    myfile.open ("example1.txt");
    for (int j; j < 3; j++)
    {
        myfile << i ;
        myfile << " " << x;
        myfile << " " << y << endl;
        i++;
        x = x + 2;
        y = x + 1;
    }
    myfile.close();
    return 0;
}

请指出错误或提出解决方案。
2个回答

5
std::ofstream ofile;
ofile.open("example.txt", std::ios::app); //app is append which means it will put the text at the end

int i{ 0 };
int x{ 0 };
int y{ 0 };

for (int j{ 0 }; j < 3; ++j)
   {
     ofile << i << " " << x << " " << y << std::endl;
     i++;
     x += 2; //Shorter this way
     y = x + 1;
   }
ofile.close()

尝试这个:它将按照你想要的方式写入整数,我亲自测试过了。
基本上,我所做的第一件事是将所有变量初始化为0,这样就可以得到正确的结果。使用ofstream时,我只需将其设置为std :: ios :: app,表示追加(它基本上总是在文件末尾写入整数)。我还将写入操作改成了一行代码。

递增i仍然是未定义行为。增加x也是如此。 - muXXmit2X
这不是我的问题,我只是确保它可以写入文件,至于整数他怎么处理就随他了。 - SoLux
你的回答仍然会导致未定义行为,这应该尽一切可能避免!你已经初始化了 y,那么也应该初始化 ix,这样问题就解决了。 - muXXmit2X
你没有将所有的变量都初始化为0,只有y - muXXmit2X
是的,修改了。我还没有完全适应新的 C++,我的错。 - SoLux
1
感谢您提供详细的答案和另一种编写代码的方式。 - Learn1

1
你的问题与“将整数写入文件”无关。 你的问题在于j未初始化,然后代码从未进入循环。
我通过在循环开始时初始化j来修改你的代码,文件已成功写入。
#include<iostream>
#include<sstream>
#include<fstream>
#include<iomanip>


using namespace std;

int main ()
{
    int i=0, x=0, y=0;
    ofstream myfile;
    myfile.open ("example1.txt");

    for (int j=0; j < 3; j++)
    {
        myfile  << i ;
        myfile  << " " << x;
        myfile  << " " << y << endl;
        i++;
        x = x + 2;
        y = x + 1;
    }
    myfile.close();
    return 0;
}

它会输出一个名为“example 1.txt”的文件,其中包含以下内容:
0 0 0
1 2 3
2 4 5

如果你没有初始化i、x和y,代码仍会写入文件,但会写入如下垃圾值:
1984827746 -2 314951928
1984827747 0 1
1984827748 2 3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接