看板 C_and_CPP 關於我們 聯絡資訊
我在寫一個質因數分解的程式,在最前面我寫了一個do while迴圈來判斷輸入是否正確 以下是我的部分程式: #include<iostream> #include<string> #include<sstream> using namespace std; int main() { string input_string; //輸入為string型態 int input; //存放由input_string轉換過來的值 do { cout<<"請輸入一個小於10000的數字"<<endl; getline(cin, input_string); istringstream(input_string)>>input; } while (input>10000); return 0; } 這個程式在兩個編譯器編譯時都沒有錯誤訊息,可是執行的時候依照我輸入的文字 會有不同結果。 1. Code:blocks 使用GNU GCC compiler , debugger是 GDB 若我輸入a,則螢幕會顯示"請輸入一個小於10000的數字" 2. Visual Studio 2008 若我輸入a,則程式結束,顯示"請按任意鍵繼續"(使用 偵錯-->啟動但不偵錯) 請問為什麼會這樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.101.122
bleed1979:如果是getline(cin, input_string,'\n'); 02/21 17:58
daoism:結果是一樣的 02/21 18:35
gotoo:強制轉型的實做不一樣吧 你可以把值印出來看看... 02/21 19:20
daoism:謝謝 我了解了 02/21 20:10