企业网站建设要求,太原企业网站建设,网站建设添加展示栏,网站开发最快框架当我们输入整数#xff0c;按回车#xff0c;实际上输入的是:整数和换行符号(\n)。cin把整数读进了#xff0c;但是换行符号没有读#xff0c;因此如果接下来输入字符串#xff0c;即使用cin.getline#xff0c;首先会读入\n。然后就直接结束了。
下面这个程序需要输入四…当我们输入整数按回车实际上输入的是:整数和换行符号(\n)。cin把整数读进了但是换行符号没有读因此如果接下来输入字符串即使用cin.getline首先会读入\n。然后就直接结束了。
下面这个程序需要输入四个字符串并把它们打印出来可以看到输入三条字符串之后就结束了。
#includeiostream
#includestringusing namespace std;int main(){int num;string s, w;cin num;for (int ii 0; iinum; ii){getline(cin, s);cout s endl;}return 0; 解决方法
在输入字符串之前先用cin.get()把之前的换行符吸收掉
#includeiostream
#includestringusing namespace std;int main(){int num;string s, w;cin num;cin.get();for (int ii 0; iinum; ii){getline(cin, s);cout s endl;}return 0;
} 或者另一种方法不用getline获取字符串直接用cinstring
#includeiostream
#includestringusing namespace std;int main(){int num;string s, w;cin num;for (int ii 0; iinum; ii){cins;cout s endl;}return 0;
} 这是因为cin会自动过滤掉不可见字符如空格 回车 tab等
当cin从缓冲区中读取数据时若缓冲区中第一个字符是空格、tab或换行这些分隔符时cin会将其忽略并清除继续读取下一个字符若缓冲区为空则继续等待。但是如果读取成功字符后面的分隔符是残留在缓冲区的cin不做处理。