如果用cin读取字符串,则其会在读到空格之后停止。
比如说,我们写这样一个程序:
#include <iostream>
#include <string>
int main()
{
std::string first_name;
std::string last_name;
std::cout << "what is your first name?" << std::endl;
std::cin >> first_name;
std::cout << "what is your last name?" << std::endl;
std::cin >> last_name;
std::cout << "Your name is: " << last_name << " " << first_name << std::endl;
return 0;
}
有的时候一个人的名字中间可能有空格,比如说,其first_name为"Mei mei"
则输出如下:
因为读到Mei后面的空格cin结束,所以last_name?读入Mei,程序结束
我们不想这样,那怎么读入一行呢?使用getline()函数
修改程序为:
#include <iostream>
#include <string>
int main()
{
std::string first_name;
std::string last_name;
std::cout << "what is your first name?" << std::endl;
getline(std::cin, first_name);
std::cout << "what is your last name?" << std::endl;
getline(std::cin, last_name);
std::cout << "Your name is: " << last_name << " " << first_name << std::endl;
return 0;
}
getline的第一个参数指定从哪里读取信息(即std::cin的标准输入流),第二个参数指定读取的位置
运行这个程序:
可见得到正确结果?