C++字串輸入輸出操作詳解

2020-07-16 10:04:38
"<<" 和 ">>" 提供了 C++ 語言的字串輸入和字串輸出功能。"<<" 可以將字元讀入一個流中(例如 ostream);">>" 可以實現將以空格或回車為 "結束符" 的字元序列讀入到對應的字串中,並且開頭和結尾的空白字元不包括進字串中。

還有一個常用的 getline() 函數,該函數的原型包括兩種形式:

template <class CharType, class Traits, class Allocator > basic_istream<CharType, Traits>& getline (basic_istream<CharType, Traits>& _Istr,basic_string <CharType,Traits, Allocator> &_Str);
//上述原型包含 2 個引數:第 1 個引數是輸入流;第 2 個引數是儲存輸入內容的字串
template <class CharType, class Traits, class Allocator> basic_istream<CharType, Traits>& getline (basic_istream <CharType, Traits>&_ Istr, basic_string <CharType, Traits, Allocator>& _Str,CharType_Delim);
//上述原型包含 3 個引數:第 1 個引數是輸入流,第 2 個引數儲存輸入的字串,第 3 個引數指定分界符。

該函數可將整行的所有字元讀到字串中。在讀取字元時,遇到檔案結束符、分界符、回車符時,將終止讀入操作,且檔案結束符、分界符、回車符在字串中不會儲存;當已讀入的字元數目超過字串所能容納的最大字元數時,將會終止讀入操作。

下面分別按上述兩種函數原型舉例說明,參見下述程式:
#include <iostream>
#include <string>
using namespace std;
void main ()
{
string s1, s2;
getline(cin, s1);
getline(cin, s2, ' ');
cout << "You inputed chars are: " << s1 << endl;
cout << "You inputed chars are: " << s2 << endl;
}
程式的執行結果為:

123456
asdfgh klj
You inputed chars are: 123456
You inputed chars are: asdfgh

注意,程式中輸入的第二行字元中間包含空格字元,而空格之後的字元沒有被儲存到字串 s2 中。