知道好多人初学者会像我一样看不懂那些长篇的输入介绍(也不想看),这里有直接的代码写法!!!!!!
以前只会用gets(),结果它被c++11标准给删了,洛谷里用不了。因为用得少记不住,每次都得去查一遍,这里就直接列几个我已知的字符串的输入方法,注意事项写在注释,初学应该是足够用了,后续会不断补充。当然cin也可以(读到空格等结束)
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
char input[7][100];
string Input;
int main()
{
scanf("%s",input[1]); //读到空格等结束。'\n'留存缓冲区
//getchar(); //取出留在缓冲区内的'\n',也可以用fflush(stdin);清空
scanf("%[^\n]s",input[2]); //读到回车结束。'\n'留存缓冲区。在第一行就不要getchar()了
//getchar(); //取留在缓冲区内的'\n' ,也可以用fflush(stdin);清空
gets(input[3]); //gets读入'\n'且将其自动换为'\0' (已在c++11标准中删除) 。在第一行就不要getchar()了
fgets(input[4],100,stdin); //fgets读入'\n'并自动在最后加上'\0' 。括号内为(地址,长度,stdio指键盘输入)
cin.getline(input[5],100,'\n'); //<iostream>头文件内,括号内为(地址,长度,分隔符(默认回车,可不写))
int len=0;
while((input[6][len++]=getchar())!='\n'); //一个一个读
input[6][len-1]='\0'; //补'\0'
getline(cin,Input,'\n'); //<string>头文件内,括号内所填为(输入流,地址,分隔符(默认回车,可不写))
for(int i=1;i<=6;i++)
cout<<i<<" "<<input[i]<<"长度为:"<<strlen(input[i])<<endl;
cout<<7<<" "<<Input<<"长度为:"<<Input.length()<<endl;
return 0;
}
实现结果:(注意fgets的换行与长度的不同)