C "cin" 只讀取第一個單字
在C 中,輸入流運算子>>通常從輸入來源(例如鍵盤)讀取單字。當嘗試讀取包含空格的字串時,這可能會出現問題,因為只會捕獲第一個單字。使用字元數組時可能會遇到此問題。
請考慮以下程式碼:
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin >> str; } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }
在 Turbo C 4.5 中執行此程式碼時,僅顯示字串的第一個單字。這是因為cin>> str 僅將一個單字讀入 str 字元陣列。要讀取完整的輸入行(包括空格),需要另一種方法。
一個選項是使用 getline() 函數:
<code class="c++">#include <iostream> #include <string> using namespace std; int main() { string s; cout << "Enter string :"; getline(cin, s); cout << s; return 0; }</code>
此程式碼將讀取整行輸入的數量(包括空格)到 s 字串中。 getline() 也可用於讀入字元數組:
<code class="c++">#include <iostream.h> #include <conio.h> int main() { char str[100]; cout << "Enter string :"; cin.getline(str, sizeof str); cout << str; return 0; }</code>
或者,如果您喜歡使用>>運算符,您可以如下修改程式碼:
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin.getline(str, sizeof str); } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }</code>
透過這些修改,程式碼將正確讀取並顯示整個輸入字串。
以上是如何使用 C 的 `cin` 讀取包括空格在內的整行輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!