如果用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的标准输入流),第二个参数指定读取的位置
运行这个程序:
可见得到正确结果