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