cin获取string注意点
在cpp中,通过cin>>获取输入是非常常见的操作。
值得注意的是:当string中包含空格、tab和回车时都会结束输入,比如:
怎么才能获取string中的空格呢?
可以使用#include<string>库中的getline函数实现。
TAB制表符也能获取
妈的,后来发现一个更严重的问题,就是当正常输入一个cin以后,再调用getline会出现意想不到的结果,就是无论如何都没有对s的输入,现象就是看起来像直接跳过s:
打断点发现,在输出之前直接通过一个cin就完成了,即使经过了getline,也没有给s值(毕竟我们还没有按理想的情况给s输入),那么是为什么会跳过getline呢?
原因是cin的最后系统默认给了一个换行符,这个换行符导致了getline的问题。
可以通过cin.ignore()避免这个换行符的检测: