知道好多人初学者会像我一样看不懂那些长篇的输入介绍(也不想看),这里有直接的代码写法!!!!!!
以前只会用gets(),结果它被c++11标准给删了,洛谷里用不了。因为用得少记不住,每次都得去查一遍,这里就直接列几个我已知的字符串的输入方法,注意事项写在注释,初学应该是足够用了,后续会不断补充。当然cin也可以(读到空格等结束)
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
char input[7][100];
string Input;
int main()
{
int len=0;
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>头文件内,括号内为(地址,长度,分隔符(默认回车,可不写))
while((input[6][len++]=getchar())!='\n');//一个一个读
input[6][len-1]='\0';//补'\0'
getline(cin,Input,'\n');//<string>头文件内,括号内所填为(输入流,地址,分隔符(默认回车,可不写)) ,此应用于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的换行与长度的不同)
使用掌握还应靠多打多练习,此处仅供查找。