Запись целых чисел в файл .txt на С++

Я новичок в 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;
}

Пожалуйста, укажите на ошибку или предложите решение.


person Learn1    schedule 22.08.2017    source источник


Ответы (2)


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, чтобы вы получали правильные результаты, а с потоком я просто установил его в std::ios::app, что означает добавление (в основном это будет записывать целые числа в конец файла всегда.Я также просто сделал запись только в одну строку.

person SoLux    schedule 22.08.2017
comment
Увеличение i по-прежнему является неопределенным поведением. Так увеличивается x. - person muXXmit2X; 22.08.2017
comment
Это не на моей стороне, я просто убедился, что он может писать в файл, он делает что хочет с целыми числами. - person SoLux; 22.08.2017
comment
Ну, все же ваш ответ вызовет неопределенное поведение, которого следует избегать любыми способами! Вы инициализируете y, так в чем проблема инициализировать i и x. - person muXXmit2X; 22.08.2017
comment
И вы не инициализировали все переменные в 0, только y. - person muXXmit2X; 22.08.2017
comment
Да, отредактировал, я не до конца освоился с новым C++, мой плохой - person SoLux; 22.08.2017
comment
спасибо за подробный ответ и еще один способ написания кода. - person Learn1; 22.08.2017

Ваша проблема не связана с «записью целого числа в файл». Ваша проблема в том, что 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
person Pat. ANDRIA    schedule 21.08.2018