读入一行字符串

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,'@');//字数限制加上截止字符
View Code

 2.读取string

1 string s;
2  int l;
3  getline(cin,s);
4 l=s.size();
5 getline(cin,s,'@');//加上截止字符
View Code
原文地址:https://www.cnblogs.com/adelalove/p/11661750.html