-1

我正在尝试读取和写入一些文件,但是每次我尝试std::cout对我的output.out文件进行某些操作时,都会收到“错误 C1001,编译器中发生内部错误”。

为什么 ?

(我_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++,没有矢量调整大小,现在已更正)但是错误仍然存​​在:代码正在这种状态下编译,但是一旦我尝试将 cout a字符串,出现相同的问题,就像<<" "在我的std::cout<< x[j] << h[j] << std::endl;

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

2 回答 2

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。无论您要达到什么目的,这似乎都不是方式。

于 2018-01-16T10:47:32.767 回答
0

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];
于 2018-01-16T10:45:17.110 回答