我無法解析該文件的末尾:的std ::函數getline被困在管道輸入
1
3
John Doe
Jane Smith
Jane Austen
1 2 3
2 1 3
2 3 1
1 2 3
3 1 2
與以下程序:
#include <iostream>
#include <sstream>
int main(int argc, char * argv[])
{
int cases, candidates_number;
char candidates[20][80];
int votes[20][1000];
int votes_count[20];
std::string line;
std::cin >> cases;
std::cin.get();
std::cin.get();
for (int i=0; i<cases; i++) {
std::cin >> candidates_number;
std::cin.get();
for (int j=0; j<candidates_number; j++) {
std::cin.getline(candidates[j], sizeof(candidates[j]), '\n');
}
int votes_number = 0;
while (std::getline(std::cin, line)) {
if (line.empty()) {
break;
}
std::cout << line;
votes_number++;
}
}
return 0;
}
尤其是過程卡在同時在閱讀文件的最後一行之後循環。我通過Eclipse中的「標準輸入」功能調用我的程序。
爲什麼不是std::getline
失敗並導致程序完成?
問題要求:
澳大利亞選票要求選民在排名順序 選擇的所有候選人。最初只計算第一選擇,如果 一個候選人收到超過50%的投票,那麼候選人 被選中。但是,如果沒有候選人獲得超過50%,則排除所有與最低票數並列的候選人。首先排列這些候選人的票數 重新計入他們的 排名最高的未淘汰候選人。這種消除 最弱的候選人並計算他們的選票以支持 優選的未淘汰候選人的過程一直持續到一個候選人 收到超過50%的投票或直到所有剩餘候選人 並列。
輸入
輸入具有單個正整數開始於一個行本身 表示以下情況下的數量,每一個,如下所述。 這行後面跟着一個空行。兩個連續輸入之間還有一個空行 。
每種情況的第一行是一個整數n $ \ le $ 20,表示 候選人數。接下來的n行由 候選人的名稱組成,每個長度最多80個字符,並且包含 任何可打印字符。多達1000行,其中每個包含 的投票內容。每張選票以一定順序包含從1到n 的數字。第一個數字表示第一個 選擇的候選人;第二個數字表示第二選擇的候選人,所以 。
輸出
每個測試用例的輸出由任一含有贏家或含誰綁所有考生的 名稱幾行的名稱的一個單行 的。每兩個連續的情況的輸出由空行分隔。
你已經給了它很多的輸入,它會等待更多。 – David
代碼如我所料終止。 –
請不要混用'std :: cin'和'std :: getline' - 這是一團糟。 – erip