先從一個小程序談起:
#include <iostream> #include <string> using namespace std; int main() { string s1; cin >> s1; cout << s1 << endl; return 0; }
看看測試結果:
當輸入字串“hello”時,輸出是“hello”, 正確。
但是下面當輸入“hello, nihao"時,輸出確實”hello,"把空格后面的東西全部忽略掉了。讀入規則是這樣的:
- 讀取並忽略開頭所有的空白字符(如空格、換行符、制表符)
- 讀取字符直到空白字符為止。
那怎么讀入一整行呢?
用getline讀取整行文本
函數原型:getline(cin, string),第一個參數是輸入流對象、第二個參數是保存字符串的字符串對象。getline從輸入流中讀取對象保存到string中,但是不包括換行符,這樣就可以保存一行中的空格、制表符了。
示例程序:
#include <iostream> #include <string> using namespace std; int main() { string s1; while(getline(cin, s1)) { cout << s1 << endl; } return 0; }
測試結果: