<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先宣告:在C++中支援三種域區域性域,名稱空間,類域。
在C++中可能會出現這樣的情況:我們正在編寫一個名為myj()函數的程式碼,但是另一個可用的庫,它也具有相同的myj()函數。現在編譯器無法知道程式碼中使用的myj()函數是哪個版本。
所以namespace就是用來克服這個困難,並被用作額外的資訊來區分類似的函數、類、變數等等,它們在不同的庫中具有相同的名稱。使用名稱空間,你可以定義定義名稱的上下文。
本質上,名稱空間定義了一個範圍。
舉例說明:
//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; } }
#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 = %dn", i); printf("Second::i = %dn", Second::i); //使用名稱空間中的變數 p = { 2, 3 }; printf("p.x = %dn", p.x); printf("p.y = %dn", p.y); system("pause"); return 0; }
標準C++庫中的所有元件都是在一個被稱為std的名稱空間中宣告和定義的。在採用標準C++的平臺上使用標準C++庫中的元件,只要寫一個using指示符:
using namespace std;
就可以直接使用標準C++庫中的所有成員。
定義string的方式跟基本資料型別相同,只需要在string後跟上變數名
string s;
初始化:
string str = "yyds";
如果要讀入和輸出整個字串,則只能使用cin和cout
如果一定要用printf來輸出string,可以用c_str()函數將string型別轉換為字元陣列進行輸出。
printf("%s",str.c_str());
因為string不像其他STL容器那樣需要引數,因此可以直接如下定義:
string::iterator it;
這樣就得到了迭代器it,並且可以通過*it來存取string裡的每一位
1.operator+
連線兩個字串或者一個字串和一個字元。
2.compare operator
兩個string型別可以直接使用==、!=、<、<=、>、>=比較大小,比較規則是字典序。
3.length()/size()兩者返回string的長度,即存放的字元數。
4.insert(pos,string)
在pos號位置插入字串string
5.insert(it,it2,it3)
it為原字串的欲插入位置,it2和it3為待插字串的首位迭代器,用來表示串[it2,it3)將被插在it的位置上。
6.erase()
刪除單個元素,str.erase(it)用於刪除單個元素,it為需要刪除的元素的迭代器。 刪除一個區間內的所有元素。
7.clear()
用以清空string中的資料。
8.substr()
substr(pos,len)返回從pos號位開始、長度為len的字串。
9.string::npos
一個常數,其本身的值為-1,但由於是unsigned_int 型別,因此實際上也可以認為是unsigned_int型別的最大值4294967295。 string::npos用以作為find函數匹配時的返回值。
10.find()
str.find(str2),當str2是str的子串時,返回其在str中第一次出現的位置;如果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())可以實現字串翻轉。
到此這篇關於C++深入講解namespace與string關鍵字的使用的文章就介紹到這了,更多相關C++ namespace與string內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45