Skip to content
本页目录

5.9 字符串的输入与输出

发布时间:

一、 字符串的输入

总结:

方法对应char[ ]对应string结束标识其它
scan( "%s",c)char[ ]x空格/换行推荐
cinchar[ ]string空格/换行
gets(c)char[ ]x换行有隐患
getline(cin,s)xstring换行推荐

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;