2008年10月21日 星期二

C風格字串

C風格字串沒有什麼特別之處,只是char型態的陣列,最後一個字元是0,這個最後的字元是標記字串的結束。

建立C風格字串時,可以建立char型態的陣列,並將字串中的每一個字元指定給陣列中的元素,然後加上一個0,表示為'\0'代表字串的中止符號,標記字串結束。

建立字串有以下兩個方法

#include <iostream>
using namespace std;
int main()
{
  char word[] = {'H' , 'e' , 'l' , 'l' , 'o' , '\0'};
  char string1[] = "Hello";
  cout << string1 << endl;
  return 0;
}


其它字串function:
尋找字串:strstr
比較字串:strcmp
連結字串:strcat
拷貝字串:strcpy
將整數轉換成字串:itoa
將字串轉換成整數:atoi
將字串轉換成float:atof
傳回字串的長度:strlen
將一個數格式化為一個字串,該函數的用法是:

sprintf(string,format,list)

string是將要顯示的字串,format是表明格式化結果的轉換字串,為list中的每一個元素都指定轉換字串。可能在使用socket時會用到~

用cin的方法讀取C風格的字串

#include <iostream>
using namespace std;

int main()
{
  const int total = 50;
  char string1[total];
  cout << "Type some words: ";
  cin.getline(string1,total);
  cout << "You typed: " << string1 << endl;
  return 0;
}

該方法讀取的字元數為傳入的數目減1,因為,必須考慮到串尾的'\0'的空間。

將儲存字串的C風格的字串以及要讀取的最大字元傳入到cin.get (cin.get將一直讀取到最大的字元數減1,或者使用者按下Enter)。
需要注意一點:cin.get一直讀取,直到有一個終止符號'\n',但是,不讀取'\n'。要將'\n'從輸入緩衝區清除時,可以使用方法cin.clear,或者再次呼叫cin.get。


#include <iostream>
using namespace std;

int main()
{
  const int total = 50;
  char string1[total];
  cout << "Type some words: ";
  cin.get(string1,total).get();
  cout << "You typed: " << string1 << endl;
  return 0;
}


在C++中如果以""來包括一串文字的話,即為字串字面常數,例如"Hello! World!"就是字串字面常數,字串字面常數由字元陣列組成,每一個字串最後會以一個null字元結束。

沒有留言: