Open caiyangyang711 opened 3 years ago
①getline
读取的是 string
类型,而在第一张图中的类型是字符数组,char-array、string两者是不一样的。string
类型才有 .size()
方法。
② 使用cin
是没有办法读取空行的,因为cin
在读取数字型数据的时候,会舍弃缓冲区中遇到的空白字符,包括空格、回车这些,而在cin
读取字符串型数据的时候,又会以空白符作为截断点。因此,想要读取空行,要用getline
函数。
③ 顺带一提,如果你用cin
读完一个数据,紧接着用getline
,大概率是会得到一个空字符串的。比如下面这种情况。此时 cin
读入kase
之后,缓冲区当中还有一个回车符,那么接下来getline便会从缓冲区中读入的回车符,getline
不以空格作为截断点,而是以换行符作为截断点,因而会得到一个空字符串。(需要注意,空字符串不等于NULL,而是长度有效长度为零的字符串)
...
int kase;
int main(){
cin>>kase;
string ss;
while(getline(cin,ss)){
...
}
return 0;
}
...
`