我需要輸入多於10000個整數,小於最大長度,直接放入控制檯。控制檯使用getline(cin,string)接受超過9000個的東西。逐個輸入它們會顯着減慢我的程序。無論如何,我可以重寫控制檯的getline最大輸入嗎?從C++的控制檯輸入一個大的輸入
[編輯成包括OP的評論:]
#include <iostream>
using namespace std;
int main()
{
long long n=0,i=0,a,b;
cin>>n;
for(i=0;i<n;i++) { cin>>a>>b; cout<<a+b<<endl; }
return 0;
}
這段代碼給出了一個「時間超限」錯誤的任務時超過10000個整數輸入。
編輯: 從一個答案改寫的幫助代碼後:
#include <iostream>
static inline int error(int n) { std::cerr << "Input error!\n"; return n; }
int main()
{
long long a,b,n; // number of colours and vertices
if (!(std::cin>> n)) { return error(1); }
for (int i = 0; i != n; ++i)
{
if (!(std::cin >> a>>b)) { return error(1); }
std::cout << a+b << "\n";
}
}
現在,它給了我在測試時的運行時錯誤(NZEC)用10000+整數
編輯2: 我發現了一些能幫助我,但它只是在C#:How to read very long input from console in C#? 找不到在C++
有什麼問題直接'而(給std :: cin >> N){/ *存儲n * /}'循環的標準輸入? 「極其緩慢」是什麼意思?多久時間?發佈一些展示緩慢的代碼。 –
您的代碼違反了輸入讀取的基本規律:您無法檢查輸入操作的返回值。所有其他關於代碼的思考都基本沒有意義,因爲任何事情都可能出錯,而且你甚至不費心去檢查它們。請參閱[本答案](http://stackoverflow.com/a/10467051/596781)瞭解如何閱讀輸入。 –