C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化


 

一、字符串输入输出函数

1.  cin.get()  

    逐个字符输入输出

2.  cin

    可以将整个字符串一次性输入,但是,cin将空格、Tab和回车键,因此不能用于数组的一次性输入。

   注意:cin和cout  都可以用于字符串整体输入输出,无须像cin.get()函数那样只能逐个字符输入,但是

   cin 不可以输入空格,而cout可以输出空格。

3. cin.getline()

    接收一个字符串,可以接收空格并输出,遇到回车键结束。

 1 #include <iostream>
 2 
 3 using namespace std;  4 
 5 main ()  6 
 7 {  8 
 9 char m[20]; 10 
11 cin.getline(m,5); 12 
13 cout<<m<<endl; 14 
15 }

 

 

输入:jkljkljkl

输出:jklj

       注意:接收5个字符到m中,其中最后一个自动添加为'\0',所以只看到4个字符输出;

 

如果把5改成20:

输入:jkljkljkl

输出:jkljkljkl

        输入:jklf fjlsjf fjsdklf

输出:jklf fjlsjf fjsdklf

 

延伸:

1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)。

2、当第三个参数省略时,系统默认为'\0'。

3、如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk。

4.  getline()

接收一个字符串,可以接收空格并输出,需包含“#include<string>”,遇到回车键结束。

#include<iostream>

#include<string>

using namespace std;

main ()

{

string str;
getline(cin,str);
cout<<str<<endl;
}

输入:jkljkljkl
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl

5. gets_sputs函数  

在新的C++标准中,原来的gets函数现在已经改成了gets_s。

(1)gets_s函数:输入一个字符串到字符数组中,可以输入空格和Tab,但是不能输入回车键。输入完成后,在结尾自动添加空字符。

char str[80];

gets_s(str);

(2)puts_s函数输出一个字符串,但是不包含空字符,但在新的C++标准中,也能输出空字符。

 char str[80]=”programme”;

 puts_s(str);

 

 

二、C++字符串中空格,空字符、回车、换行的区别

(1)空格的ASCII码为32,符号表示为 \40,    赋值语句为:

    char a=’ ‘; 或者char a=32;

(2) \0  表示结束符,一般在字符串的最后是结束字符,ASCII码为0。一般字符串输出函数遇到空字符就停止输出。

(3)  \r  表示回车符,  c++语言编程时(windows系统)   就是return 回到本行行首, 这就会把这一行以前的输出覆盖掉

如:
int main()

{
cout << "hahaha" << "\r" << "xixi" ;
}
最后只显示 xixi 而 hahaha 被覆盖了

(4) \n 是换行符,c++语言编程时(windows系统),是回车+换行, 把光标先移到行首, 然后换到下一行,也就是下一行的行首。

int main() {
cout << "hahaha" << "\n" << "xixi" ;
}
则 显示
hahaha
xixi

 

 

三. 字符变量赋值和字符串初始化

  (1)字符变量赋值用单引号 ‘’或者直接用ASCII码;

  (2)字符串赋值用双引号

      char a[10]=”abcd”;

      或者char a[4]={‘a’,’b’,’c’,’d’};

理解记忆:字符变量或者字符串中的元素如a[3],里面存储的是ASCII值,而不是字符,因为计算机存储的其实都是数字。单引号‘’表示取引号内的ASCII值。双引号表示文本。  

 

      注:本文有部分内容来自于网上网友的博客,在此向他们表示感谢。

    

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM