主要用到输入函数std::getline(…)或者cin.getline(…)。由于std::getline(…)支持std::string输出,儿cin.getline(…)输出是char*,并且两者用法几乎一样,所以本文主要讲std::getline(…),简略说明一下cin.getline(…)用法就行。
一、std::getline原理和用法
1.1 std::getline参数解析
std::getline有两个版本,分别如下代码所示:
// (1)
istream& getline (istream& is, string& str, char delim);
// (2)
istream& getline (istream& is, string& str);
1.1.1 istream& getline (istream& is, string& str, char delim)解析
其中第一个版本有三个参数,第一个参数是输入流,一般是输入std::cin;第二参数为输出到字符串str中;第三个为定界符delim,遇到定界符delim输入截止。
下面是其用法代码示例:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string arrs;
std::getline(std::cin, arrs, '#');
cout << arrs << endl;
return 0;
}
输出结果图
由此可见,输入终止的条件是遇到定界符delim,否则换行符也无法终止输入,只有遇到定界符delim才会结束输入。
1.1.2 istream& getline (istream& is, string& str)解析
另一个版本有两个参数,第一个参数是输入流,一般是输入std::cin;第二参数为输出到字符串str中;第三个参数没有,但是代码实现默认为换行符了’\n’,所以该版本无法输出换行符。
下面是其用法代码示例:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string arrs;
std::getline(std::cin, arrs);
cout << arrs << endl;
return 0;
}
输出结果图