freopen и cout создают внутреннюю ошибку

Я пытаюсь прочитать и записать некоторые файлы, но я получаю «ОШИБКА C1001, внутренняя ошибка произошла в компиляторе» каждый раз, когда я пытаюсь std::cout что-то мое output.out файл.

Зачем ?

(я использовал _CRT_SECURE_NO_WARNINGS в определении препроцессора, чтобы иметь возможность использовать freopen())

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <deque>
#include <array>
#include <vector>

freopen("C:\\somepath\\input.in", "r", stdin);
freopen("C:\\somepath\\output.out", "w", stdout);

int t;
std::cin >> t;
std::cout << t << std::endl;
for (int i = 0; i < t; i++)
{
int n;
std::cin >> n;
std::cout << t << std::endl;
std::vector <int> x, h;
x.resize(n);
h.resize(n);
for(int j=0;j<n;j++)
{
std::cin >> x[j] >> h[j];
std::cout<< x[j] << h[j] << std::endl;
}
}

РЕДАКТИРОВАТЬ: как сказал Nighteen, у меня были некоторые ошибки в моем коде (n ++, без изменения размера вектора, теперь исправлено)
Но ошибка, по-прежнему существует в некотором роде:
Код компилируется в этом состоянии, но как только я пытаюсь поместить строку, появляется та же проблема
как добавление <<" " в моем std::cout<< x[j] << h[j] << std::endl;

in the std::cout<< x[j] <<" "<< h[j] << std::endl;

-1

Решение

Код прекрасно компилируется в MSVC 15.5.2, если вы поместите код в основной блок. доказательство Вот.

Несмотря на то, что с компиляцией все в порядке, кажется, что код работает не так, как должен. Прежде всего, вы не можете std::cin >> x[j] >> h[j];, Создайте временную переменную для хранения ввода, а затем вставьте ее обратно в вектор:

int input1, input2;
std::cin >> input1 >> input2;

x.push_back(input1);
h.push_back(input2);

Вы также должны отметить, что этот цикл for (int j = 0; j < n; n++) никогда не заканчивается. Переменная j должно увеличиваться, а не n, Чего бы вы ни пытались достичь, похоже, это не тот путь.

1

Другие решения

std :: cout — это std :: ostream, используемый для вывода на консоль. Для вывода в файлы используются классы std :: ifstream и std :: ofstream. Используйте следующий синтаксис:

std::ifstream [ifstream_name](constructor parameters);
[ifstream_name] >> [container to store file contents];

std::ofstream [ofstream name](constructor parameters);
[ofstream_name] << [contents to write to file];
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector