C:
在C中没有string类,用char字符串数组来表示字符串,以‘\0’来表示字符串的结束;
因为是用数组来表示字符串,对于数组限长检查很重要;
- scanf(),对空格敏感,只能输入单词而不能输入带空格的字符串,而且没有对数组限长的检查,非常不建议; 代替品是scanf_s(); 而数组要考虑到为结尾的’\0’预留位置;
- gets(),对空格不敏感,检测到回车结束输入,但是回车会残留到输入缓冲中;而且没有对数组限长的检查,不建议;代替品是gets_s(),fgets(),含有限长检查
C++:
C++中提供了string类,结尾不用包含’\0’,而且不要一开始就定义长度,因此string类的输入不需要限长检查;
- cin,对空格敏感,只能输入单词而不能输入带空格的字符串
- cin.getline(str,bufsize,EOF),不会残留回车,会读取回车并转换为空字符,而且可以自定义结束符,因为是针对char字符串数组的,因此依旧需要限长检查;
- getline(cin,str,EOF),是string类提供的方法,不会残留回车,可自定义结束符,不需限长检查;
- cin.get()与cin.getline相似,但是会有残留
在C/C++中,get/gets都会有回车残留,getline都没有残留
542

被折叠的 条评论
为什么被折叠?



