![](/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.