C語言中沒有string

2021-07-02 22:05:15 字數 1349 閱讀 3674

" c語言中有string型別變數嗎"

這裡的 string 有 二 義性。

(1) 如果 string 是普通詞彙,「c語言中有字元型別變數嗎」, 答,有。 字元型別 用 char 宣告。

char str="this is a string";

(2) 如果 string 是專用詞彙,「c語言中有string型別變數嗎」,答,沒有。string 是 類,是 class, 不是 型別,不是 type.

類 的 宣告 用 建構函式初始化,或 new 宣告。

類 -- c++, 不是 c

c語言裡壓根就沒有string這個型別,所以字串都是通過char陣列來儲存的, 而這個標頭檔案裡宣告的函式原型也全是針對char陣列的種種操作。直到c++中才出現了string這個類(注意是類, 不是型別)。

c語言裡有這個標頭檔案,所以不要想當然的認為c語言裡有string這個 型別。通過下面這種形式來宣告string的變數 string astring; 程式設計時通不過編譯。

要想使用標準c++中string類,必須要包含

#include // 注意是,不是,帶.h的是c語言中的標頭檔案

using std::string;using std::wstring;

或using namespace std;

下面你就可以使用string/wstring了,它們兩分別對應著char和wchar_t。

用法string和wstring的用法是一樣的,以下只用string作介紹:

string類的建構函式:string(const char *s); //用c字串s初始化 string(int n,char c); //用n個字元c初始化

此外,string類還支援預設建構函式和複製建構函式,如string s1;string s2="hello";都是正確的寫法。當構造的string太長而無法表達時會丟擲length_error異常 ;

string類的字元操作:

const char &operator(int n)const; const char &at(int n)const; char &operator(int n); char &at(int n);

operator和at()均返回當前字串中第n個字元的位置,但at函式提供範圍檢查,當越界時會丟擲out_of_range異常,下標運算子不提供檢查訪問。

const char *data()const;//返回乙個非null終止的c字元陣列 const char *c_str()const;//返回乙個以null終止的c字串

int copy(char *s, int n, int pos = 0) const;//把當前串中以pos開始的n個字元拷貝到以s為起始位置的字元陣列中,返回實際拷貝的數目

C語言中String庫 2

2008 02 23 14 07 size t strcspn const char s1,const char s2 返回值是字串 s1的完全由不包含在字串 s2中的字元組成的初始串長度。size t strspn const char s1,const char s2 返回值是字串 s1的完全由...

c語言中的String庫

在c語言中,對字串的處理非常重要,特別在一些網路裝置中,處理過程會影響裝置的 和吞吐量。這裡詳細注釋了 string.h中的所有函式。以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const ...

c語言中的String庫

在c語言中,對字串的處理非常重要,特別在一些網路裝置中,處理過程會影響裝置的 和吞吐量。這裡詳細注釋了 string.h中的所有函式。以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const ...