字符串的输入、输出总结(数组字符串)

版权声明:个人学习笔记记录 https://blog.csdn.net/Ratina/article/details/84255690
  • 声明
char str[maxn]      //maxn为常量

char类型数组声明字符串必须给出其大小,之后大小固定。

  • 输入

cinscanf( ) ,都是遇到"空格"、“TAB”、“回车”结束,即一次读取一个单词。

#include<cstdio>
scanf("%s",str);
#include<iostream>
cin>>str;

cin.get ( str , Size ) ,遇到回车或读满 (Size-1)个字符结束,但并不会读入回车,回车依旧被留在缓冲区,第Size个字符也不会被读入

#include<iostream>
cin.get(str,maxn);   //读入maxn-1个字符,留下一个位置给'\0'

Size中包括 '\0’,故读取Size-1个字符
此外,cin.get ( 无参数 ) 用法等同于getchar( )。


cin.getline ( str , Size , 结束字符) ,第三个参数通常省略,省略后默认以‘\0’为结束字符。

cin.getline读取到回车停止后不会将回车留在缓存区,而是将回车读入并替换为’\0’,即完整读入一行但字符串内不会有回车。
结束字符也会被读入但随后被替换为 '\0’


④C语言的gets()和fgets(),详见:https://www.cnblogs.com/qingergege/p/5925811.html


  • 输出
    字符串的输出就很简单了,一般都是从提供的首地址开始,到’\0’结束。
#include<cstdio>
printf("%s",str);
#include<iostream>
cout<<str;

Ps.个人认为在程序设计竞赛当中,读入一个个单词自然是用cin和scanf(),当需要读入一行时,用cin.getline()更好,因为cin.getline()不会将这一行的回车留在缓冲区,但是最好不要加第三个参数(结束字符),因为cin.getline()会将结束字符读入并删除

参考资料:http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html

猜你喜欢

转载自blog.csdn.net/Ratina/article/details/84255690