2012-05-16 35 views
0

通常我編寫一個控制循環,如下所示: 循環將輸入寫入到向量nVec中直到輸入「完成」。當沒有輸入任何內容時結束一個循環

這工作得很好,但我將如何去這樣做,如果我想在循環結束,一旦用戶輸入任何內容(只是按下回車)?

+0

'='是賦值運算符,'=='是等於運算符。最好不要混淆它們。 –

回答

1

你不能「不輸入任何東西」進入你的令牌式提取。循環停止的唯一方法是讓用戶發送文件結束符(Linux上的Ctrl-D)。我個人說,這是正確的行爲,但如果你想結束對空的輸入,你需要閱讀線:

Sales_item total; 

for (std::string line; std::getline(std::cin, line);) 
{ 
    if (line.empty()) { exit_program(); /* or "break" */ } 

    std::istringstream iss(line); 
    for (Sales_item book; iss >> book;) 
    { 
      total += book; 
      std::cout << "The current total is " << total << std::endl; 
    } 
} 

這樣,您記號化各行成可能多本書籍。如果您只想每行一本書,請翻出內部循環,然後說出std::istringstream(line) >> book;

+0

謝謝...是否有任何理由爲什麼我得到這些錯誤: | 10 |錯誤:'exit_program'未在此範圍內聲明| | 12 |錯誤:變量'std :: istringstream iss'具有初始值設定項但不完整類型| 我猜,exit_program()需要在頭文件中調用,如果是這樣的話?但我不知道不完整的類型...... –

+0

你需要'#include '爲字符串流。 'exit_program'是我剛剛製作的一個名字。你應該把任何你喜歡的東西放在那裏以逃避循環。就像'return 0;'或'break;'會做的。 –

+0

謝謝!向你展示我是多麼新...感謝幫助! –