gpt4 book ai didi

c++ - freopen和cout创建内部错误

转载 作者:行者123 更新时间:2023-12-02 11:08:57 26 4
gpt4 key购买 nike

我正在尝试读写一些文件,但是每次我尝试对std::cout文件进行output.out编码时,都会收到“ERROR 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++,没有 vector 大小调整,现在已纠正)
但是,该错误仍以某种方式存在:
代码正在这种状态下编译,但是一旦我尝试将cout字符串放入,就会出现相同的问题
就像在我的 <<" "中添加 std::cout<< x[j] << h[j] << std::endl;
in the std::cout<< x[j] <<" "<< h[j] << std::endl;

最佳答案

假设您将代码放在主块中,则该代码在MSVC 15.5.2中可以正常编译。证明here

即使编译正常,代码似乎也无法正常工作。首先,您不能std::cin >> x[j] >> h[j];。创建一个临时变量来存储输入,然后将其推回到 vector 中:

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

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

您还应该注意,此循环 for (int j = 0; j < n; n++)永远不会结束。变量 j应该增加,而不是 n。无论您要实现什么目标,这似乎都不是办法。

关于c++ - freopen和cout创建内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279280/

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