C++中關於輸入輸出的

 1,如果要輸入一個帶有空格的字符串

 

可以用gets()命令。例如,

gets(buff)表示從鍵盤輸入字符串,存入buff的字符數組中。

 

2,求一個字符串的長度

 

可以用strlen()函數解決

strlen()表示從函數形參開始的位置開始掃描,直到遇到/0字符才結束

 

 

3.

strcmp函數  

 

        strcmp函數是比較兩個字符串的大小,返回比較的結果。一般形式是:  

                i=strcmp(字符串,字符串);

        其中,字符串1、字符串2均可爲字符串常量或變量;i  是用於存放比較結果的整型變量。比較結果是這樣規定的:  

①字符串1小於字符串2,strcmp函數返回一個負值;

②字符串1等於字符串2,strcmp函數返回零;

③字符串1大於字符串2,strcmp函數返回一個正值;那麼,字符中的大小是如何比較的呢?來看一個例子。

        實際上,字符串的比較是比較字符串中各對字符的ASCII碼。首先比較兩個串的第一個字符,若不相等,則停止比較並得出大於或小於的結果;如果相等就接着比較第二個字符然後第三個字符等等。如果兩上字符串前面的字符一直相等,像"disk"和"disks"  那樣,  前四個字符都一樣,  然後比較第五個字符,  前一個字符串"disk"只剩下結束符'/0',後一個字符串"disks"剩下's','/0'的ASCII碼小於's'的ASCII碼,所以得出了結果。因此無論兩個字符串是什麼樣,strcmp函數最多比較到其中一個字符串遇到結束符'/0'爲止,就能得出結果。

注意:字符串是數組類型而非簡單類型,不能用關係運算進行大小比較。  

        if("ABC">"DEF")  /*錯誤的字符串比較*/

        if(strcmp("ABC","DEF")  /*正確的字符串比較*/

 

4.

 

有string類型的一個字符串"335   3dde       eogo            eeoigev" 請問如何做到以下?
分割到string類型的一個數組中:str[0]="335" str[1]="3dde" str[2]=eogo str[3]=eeoigev

 

 

 

可以通過istringstream實現:

//---------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main(void)
{
string str[4],stra("335   3dde eogo eeoigev");
istringstream a(stra.c_str());
a>>str[0]>>str[1]>>str[2]>>str[3];
cout<<str[0]<<endl<<str[1]<<endl<<str[2]<<endl<<str[3]<<endl;
return 0;
}
//---------------------------------------------------------------------------

 

 

 

5  另一個可以輸入帶空格的字符串的函數

cin.getline

  
  此函數是按行讀取,其語法爲:cin.getline(字符指針,字符個數N,結束符);
  功能是:一次讀取多個字符(包括空白字符),直到讀滿N-1個,或者遇到指定的結束符爲止(默認的是/0)。
  例:
  #include <iostream>
  using namespace std;
  void main()
  {
  char a[10];
  cin.getline(a,10);
  for(int i=0;i<10;i++)
  {
  cout<<a[i]<<" ";
  }
  }
  輸入:1234567890123
  輸出:1 2 3 4 5 6 7 8 9 _ (第10位爲空白字符'/0')
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章