繁体   English   中英

如何在C ++中使用cin.get()给更多的数字?

[英]How to give more number with cin.get() in c++?

我想从用户那里获得一个非常大的数字,并将该数字的各个数字分别放入数组的行中。 这就是为什么我用C ++编写此代码的原因。 但是,当我运行代码并复制那个大数字并粘贴到Windows Cmd中时,它仅接收4094位数字,并且不允许写入更多数字。 如何解决这个问题?

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int size=0; 
    int *a=NULL;
    int *b=NULL;
    int count=0;
    char x='0';

    a=new int[size];
    x=cin.get();  //input by user

    while(isdigit(x)!=0)
        {
            if(count>=size)
            {   
                 b=new int[size+1];
                 for(int i=0;i<size;i++)
                 {
                     b[i]=a[i];
                 }
                 delete []a;
                 a=b;
                 size++;
            }
            a[count++]=x-'0';
            x=cin.get();  //input by user
        }

         cout<<size;
    }

实验表明,Windows cmd.exe的最大命令行长度约为4094 *2。在Windows 10 64位计算机上,在停止输入其他字符之前,我最多可以输入8189个字符。 这意味着当我输入由空格分隔的数字序列时,我可能在单个提示中最多输入4095个单个数字。

这是有关该主题的Microsoft官方文档:

命令提示符(Cmd.exe)命令行字符串限制

哪个状态:

在运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符下使用的字符串的最大长度是8191个字符。 在运行Microsoft Windows 2000或Windows NT 4.0的计算机上,可以在命令提示符下使用的字符串的最大长度为2047个字符。

此限制适用于命令行,其他进程继承的单个环境变量(例如PATH变量)以及所有环境变量扩展。 如果使用命令提示符运行批处理文件,则此限制也适用于批处理文件处理。

Microsoft甚至提供了有关如何解决此问题的指导。

修改需要长命令行的程序,以便它们使用包含参数信息的文件,然后在命令行中包含文件名。

在您的情况下,您使用的是cin,但似乎存在相同的限制。

这表明您的问题出在特定提示的输入方法上。 一次输入的数量是有限制的。


相关问题: 命令行字符串的最大长度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM