簡體   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