C++ 文件读取会在几行之后停止

C++ 文件读取会在几行之后停止,c++,fstream,C++,Fstream,我必须读取一个文件input.txt,它总是有N行。每行由两个整数组成。具体地说,我正在读取一个文件,其中两个整数都是2^(行索引-1) int temp1、temp2; std::vec1,vec2; std::fstream fh(“input.txt”,std::ios_base::in); 对于(int i=0;i>temp1>>temp2; vec1.向后推(temp1); vec2.推回(temp2); } //输入的前几行是 //1 1 //2 2 //4 4 // . . .

我必须读取一个文件input.txt,它总是有N行。每行由两个整数组成。具体地说,我正在读取一个文件,其中两个整数都是2^(行索引-1)

int temp1、temp2;
std::vec1,vec2;
std::fstream fh(“input.txt”,std::ios_base::in);
对于(int i=0;i>temp1>>temp2;
vec1.向后推(temp1);
vec2.推回(temp2);
}
//输入的前几行是
//1 1
//2 2
//4 4
// . . . 
//第31行应为:2147483647 2147483647
//但我的代码是2147483647 1073741824
//对于N>30,情况总是如此

在第30行之后,正如您在上面的代码片段中看到的,文件读取变得很奇怪。我的代码有问题吗?或者我读取文件排序的方法限制了我可以输入的变量?

您正在达到整数限制,请参见示例。不确定为什么要这样做,但如果要保存更大的值,则需要不同的数据类型。

能否发布重现问题所需的完整代码?包括相关数据吗?像
temp1
temp2
vec2
vec1
N
等的声明一样,2147483647是一个相当大的数字,实际上它是32位整数中可能包含的最大数字。如果将
temp
声明为整数,则对于较大的数字,将出现此问题。您可能想尝试
long
datatype我已经更新了代码段。是的,你是对的,我只使用了int。我想这是语法上的问题。谢谢
int temp1, temp2;
std::vector<int> vec1, vec2;
std::fstream fh("input.txt", std::ios_base::in);    
for (int i = 0; i < N; i++) {
    fh >> temp1 >> temp2;
    vec1.push_back(temp1);
    vec2.push_back(temp2);
}
//first few lines of input are
//1 1
//2 2
//4 4
// . . . 
//Line 31 should be: 2147483647 2147483647
//but my code read it as 2147483647 1073741824
//This is always the case for N>30