您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中namespace與string關(guān)鍵字如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中namespace與string關(guān)鍵字如何使用”吧!
首先聲明:在C++中支持三種域局部域,名字空間,類域。
在C++中可能會出現(xiàn)這樣的情況:我們正在編寫一個名為myj()函數(shù)的代碼,但是另一個可用的庫,它也具有相同的myj()函數(shù)?,F(xiàn)在編譯器無法知道代碼中使用的myj()函數(shù)是哪個版本。
所以namespace就是用來克服這個困難,并被用作額外的信息來區(qū)分類似的函數(shù)、類、變量等等,它們在不同的庫中具有相同的名稱。使用名稱空間,你可以定義定義名稱的上下文。
本質(zhì)上,名稱空間定義了一個范圍。
命名空間將全局作用域分成不同的部分
不同命名空間中的標(biāo)識符可以同名而不會發(fā)生沖突
命名空間可以發(fā)生嵌套
全局作用域也叫默認(rèn)命名空間
舉例說明:
//1.普通的命名空間 namespace myj { int g _max = 10; int g_min = 0; int my_add(int a,int b){ return a+b;} } //2.名字空間域可分層嵌套,同樣有分層屏蔽作用 namespace Primer { double pi = 3.1415926535898; double my_add(double a,double b) {return a + b;} namespace Matrix { char my_max(char a,char b) { return a>b? a:b;} } } //3.同一個工程中允許存在多個相同名稱的命名空間 //編譯器最后會合成同一個命名空間中。 namespace myj { float pi = 3.14; int my_sub(int a,int b) { my_min = a - b; return my_min; } }
加名字空間及作用域限定符
使用using將名字空間中成員引入
使用using namespace名字空間名稱引入
#include <stdio.h> #include <iostream> namespace First { int i = 0; } namespace Second { int i = 1; namespace Internal //嵌套命名空間 { struct P //嵌套命名空間 { int x; int y; }; } } int main() { using namespace First; //使用整個命名空間 using Second::Internal::P; //使用嵌套的命名空間 printf("First::i = %d\n", i); printf("Second::i = %d\n", Second::i); //使用命名空間中的變量 p = { 2, 3 }; printf("p.x = %d\n", p.x); printf("p.y = %d\n", p.y); system("pause"); return 0; }
標(biāo)準(zhǔn)C++庫中的所有組件都是在一個被稱為std的名字空間中聲明和定義的。在采用標(biāo)準(zhǔn)C++的平臺上使用標(biāo)準(zhǔn)C++庫中的組件,只要寫一個using指示符:
using namespace std;
就可以直接使用標(biāo)準(zhǔn)C++庫中的所有成員。
定義string的方式跟基本數(shù)據(jù)類型相同,只需要在string后跟上變量名
string s;
初始化:
string str = "yyds";
通過下標(biāo)訪問,s[i]表示字符串s中下標(biāo)位i的元素
如果要讀入和輸出整個字符串,則只能使用cin和cout
如果一定要用printf來輸出string,可以用c_str()函數(shù)將string類型轉(zhuǎn)換為字符數(shù)組進行輸出。
printf("%s",str.c_str());
通過迭代器訪問
因為string不像其他STL容器那樣需要參數(shù),因此可以直接如下定義:
string::iterator it;
這樣就得到了迭代器it,并且可以通過*it來訪問string里的每一位
1.operator+
連接兩個字符串或者一個字符串和一個字符。
2.compare operator
兩個string類型可以直接使用==、!=、<、<=、>、>=比較大小,比較規(guī)則是字典序。
3.length()/size()兩者返回string的長度,即存放的字符數(shù)。
4.insert(pos,string)
在pos號位置插入字符串string
5.insert(it,it2,it3)
it為原字符串的欲插入位置,it2和it3為待插字符串的首位迭代器,用來表示串[it2,it3)將被插在it的位置上。
6.erase()
刪除單個元素,str.erase(it)用于刪除單個元素,it為需要刪除的元素的迭代器。 刪除一個區(qū)間內(nèi)的所有元素。
7.clear()
用以清空string中的數(shù)據(jù)。
8.substr()
substr(pos,len)返回從pos號位開始、長度為len的字串。
9.string::npos
一個常數(shù),其本身的值為-1,但由于是unsigned_int 類型,因此實際上也可以認(rèn)為是unsigned_int類型的最大值4294967295。 string::npos用以作為find函數(shù)匹配時的返回值。
10.find()
str.find(str2),當(dāng)str2是str的子串時,返回其在str中第一次出現(xiàn)的位置;如果str2不是str的子串,那么返回string::npos。 str.find(str2,pos),從str的pos號位開始匹配str2,返回值與上相同。
11.replace()
str.replace(pos,len,str2)把str從pos號位開始、長度為len的子串替換為str2 str.replace(it1,it2,str2)把str的迭代器[it1,it2)范圍的字串替換為str2
12.assign()
str.assign(str.rbegin(),str.rend())可以實現(xiàn)字符串翻轉(zhuǎn)。
感謝各位的閱讀,以上就是“C++中namespace與string關(guān)鍵字如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中namespace與string關(guān)鍵字如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。