1.读取char[]
1 char s[1000000]; 2 int l; 3 1. 4 scanf("%[^ ]",s); 5 /*说明:在scanf函数中,可以使用%c来读取一个字符,使用%s读取一个字符串, 6 但是读取字符串时不忽略空格,读字符串时忽略开始的空格, 7 并且读到空格为止,因此只能读取一个单词,而不是整行字符串。 8 其实scanf函数也可完成这样的功能,而且还更强大。这里主要介绍一个参数,%[ ],这 9 个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符, 10 比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是"^", 11 这说明读取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止。 12 注意此时读入的字符串是可以含有空格的,而且会把开头的空格也读进来。 13 注意:如果要循环的多次从屏幕上读取一行的话,就要在读取一行后, 14 在用%c读取一个字符,将输入缓冲区中的换行符给读出来。否则的话,在下一次读取一行的时候, 15 第一个就遇到' ',匹配不成功就直接返回了。这里可以用scanf()或者getchar()函数读取换行符。 16 */ 17 2. 18 gets(s);//一直读到遇到换行符),用空字符''取代行尾的换行符' '。 19 3. 20 while((s[l]=getchar())!=' ')l++; 21 //最后记得需要考虑换行符 22 4. 23 cin.get(s,1000); 24 cin.getline(s,1000); 25 cin.getline(s,100,'@');//字数限制加上截止字符
2.读取string
1 string s; 2 int l; 3 getline(cin,s); 4 l=s.size(); 5 getline(cin,s,'@');//加上截止字符