![](/img/trans.png)
[英]In C++ while using cin.get(), how can I not limit the number of characters a user can enter?
[英]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官方文档:
哪个状态:
在运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符下使用的字符串的最大长度是8191个字符。 在运行Microsoft Windows 2000或Windows NT 4.0的计算机上,可以在命令提示符下使用的字符串的最大长度为2047个字符。
此限制适用于命令行,其他进程继承的单个环境变量(例如PATH变量)以及所有环境变量扩展。 如果使用命令提示符运行批处理文件,则此限制也适用于批处理文件处理。
Microsoft甚至提供了有关如何解决此问题的指导。
修改需要长命令行的程序,以便它们使用包含参数信息的文件,然后在命令行中包含文件名。
在您的情况下,您使用的是cin,但似乎存在相同的限制。
这表明您的问题出在特定提示的输入方法上。 一次输入的数量是有限制的。
相关问题: 命令行字符串的最大长度
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.