题目描述
长度不超过100的非空字符串,数组至少空间要比字符串大1.
scanf读到“ ”,“\n”和没有时停止
可以用
forgets(s,101,stdin);
getline(cin,s);//读入string
cin.get(s,101);//不会把换行符取出删除,影响下一次读入
cin.getline(s,101);//会把换行符取出删除,不影响下一次读入
样例
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[101];
fgets(str,101,stdin);
cout<<strlen(str)<<endl;
return 0;
}
这里是从大佬那里找来的小结
- 按整行读到string ,推荐用 getline(cin, string)
- 按整行读到char[] ,推荐用 cin.getline(cin, char*)
- 读单个字符串,推荐用 cin>>
啰嗦解释如下:
按行读
getline(cin, string) 和 cin.getline(cin, char) 会读到回车为止,并且会把回车丢弃。
cin.get(cin, char) 不丢弃回车
其他:fgets 会多读入一个回车,比较麻烦
读字符串
cin >> char 会自动忽略起始的空格/回车/tab,结尾如果有回车空格,不会丢弃。 ” aa” => “aa”
scanf(“%s”, char) 同上
cin >> string 同上