![](/notes/imgs/wechat-color.jpg)
5.9 字符串的输入与输出
发布时间:
一、 字符串的输入
总结:
方法 | 对应char[ ] | 对应string | 结束标识 | 其它 |
---|---|---|---|---|
scan( "%s",c) | char[ ] | x | 空格/换行 | 推荐 |
cin | char[ ] | string | 空格/换行 | |
gets(c) | char[ ] | x | 换行 | 有隐患 |
getline(cin,s) | x | string | 换行 | 推荐 |
1、scanf语句
格式:scanf(“%s”,字符数组名);
说明:
①这里的字符串名称之前不加&这个取地址符。例如:scanf(“%s”,&s1)是错误的。
②系统会自动在输入的字符串常量后添加‘\0’标志,因此输入时,仅输入字符串的内容即可。
③输入多个字符串时,以空格分隔,缺点是不能字符串中不能有空格。有空格后面的不能被存入。
例如:
js
// string s1; //不可以字符串数据类型
char s1[100];//s1 只能是字符数组
scanf("%s", s1);
从键盘分别输入Let us go,则三个字符串分别获取了三个单词。反过来可以想到,如果仅有一个输入字符串名称的情况下,字符串变量仅获取空格前的内容。
例如:
js
scanf(“%s”,s1);
从键盘分别输入Let us go,则仅有第一个单词被获取,即s1变量仅获取第一个单词Let。
2、gets语句
格式:gets(字符串名称);
说明:
①使用gets只能输入一个字符串。
②是从光标开始的地方读到换行符也就是说读入的是一整行。
③因有安全隐患,多数编译器已被禁用。
例如:
js
scanf(“%s”,s1);
gets(s2);
对于相同的输入Hello World!。s1获取的结果仅仅是Hello,而s2获取的结果则是Hello World!
3、getline语句
格式:getline(cin,s1);
说明:
① s1以字符串格式定义。
② 存入一行字符串,中间可以包括空格。以换行符为结束。
js
string s;
getline(cin, s);
cout<<s.length();
4、cin语句
格式:cin>>s1;
说明:
① s1以字符串格式定义。
② 存入一行字符串,以空格或换行符结束。 ③ cin.get();获取结束符号
js
string s;
cin>>s;
char c=cin.get();
if(c=='\n'){
cout<<"换行结束";
}
cout<<s;