首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++中文件输入输出中的长长v/s整数

c++中文件输入输出中的长长v/s整数
EN

Stack Overflow用户
提问于 2020-06-26 01:55:32
回答 2查看 42关注 0票数 0

我尝试了许多不同的方法,但都没有成功,下面我将介绍最后一种方法:

代码语言:javascript
运行
复制
#include<iostream>
#include<fstream>

//functions here


using namespace std;

int main(){
    int n;
    long long A[300001];
    ifstream myfile("sort.in");
    myfile>>n;
    
    for(int i=0;i<n;++i){
        myfile>>A[i];
    }
    cout<<A[0];
    myfile.close();
    
    return 0;
}

这不管用。

然而,下面的方法是可行的-

代码语言:javascript
运行
复制
#include<iostream>
#include<fstream>

//functions here


using namespace std;

int main(){
    int n;
    int A[300001];
    ifstream myfile("sort.in");
    myfile>>n;
    
    for(int i=0;i<n;++i){
        myfile>>A[i];
    }
    cout<<A[0];
    myfile.close();
    
    return 0;
}

有什么问题吗?

唯一的区别是使用int而不是long long。这怎么会有这么大的区别呢?顺便说一下,不工作的意思是它不会在屏幕上产生任何输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-26 02:02:22

它很可能是一个stack overflow problem caused by large statically defined arrays

而不是

代码语言:javascript
运行
复制
long long A[300001];

使用

代码语言:javascript
运行
复制
std::vector<long long> A(300001);
票数 2
EN

Stack Overflow用户

发布于 2020-06-26 02:06:42

在这种情况下,使用long long数组可能会导致堆栈溢出。

尝试动态分配缓冲区:

代码语言:javascript
运行
复制
#include<iostream>
#include<fstream>

//functions here


using namespace std;

int main(){
    int n;
    
    ifstream myfile("sort.in");
    myfile>>n;

    long long *A = new long long[n];

    for(int i=0;i<n;++i){
        myfile>>A[i];
    }
    cout<<A[0];
    myfile.close();

    delete []A;
    
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62581472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档