亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++深入講解namespace與string關(guān)鍵字的使用

 更新時(shí)間:2022年05月21日 10:04:19   作者:Mi?ronin  
namespace命名空間或者叫名字空間,傳統(tǒng)的c++只有一個(gè)全局的namespace,namespace引入了復(fù)雜性。namespace允許像類,對(duì)象,函數(shù)聚集在一個(gè)名字下。本質(zhì)上講namespace是對(duì)全局作用域的細(xì)分

namespace

首先聲明:在C++中支持三種域局部域,名字空間,類域。

1.為什么使用namespace

在C++中可能會(huì)出現(xiàn)這樣的情況:我們正在編寫一個(gè)名為myj()函數(shù)的代碼,但是另一個(gè)可用的庫(kù),它也具有相同的myj()函數(shù)?,F(xiàn)在編譯器無(wú)法知道代碼中使用的myj()函數(shù)是哪個(gè)版本。

所以namespace就是用來(lái)克服這個(gè)困難,并被用作額外的信息來(lái)區(qū)分類似的函數(shù)、類、變量等等,它們?cè)诓煌膸?kù)中具有相同的名稱。使用名稱空間,你可以定義定義名稱的上下文。

本質(zhì)上,名稱空間定義了一個(gè)范圍。

2.namespace的定義

  • 命名空間將全局作用域分成不同的部分
  • 不同命名空間中的標(biāo)識(shí)符可以同名而不會(huì)發(fā)生沖突
  • 命名空間可以發(fā)生嵌套
  • 全局作用域也叫默認(rèn)命名空間

舉例說(shuō)明:

//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.同一個(gè)工程中允許存在多個(gè)相同名稱的命名空間
//編譯器最后會(huì)合成同一個(gè)命名空間中。
namespace myj
{
	float pi = 3.14;
	int my_sub(int a,int b)
	{
		my_min = a - b;
		return my_min;
	}
}

3.namespace的使用

  • 加名字空間及作用域限定符
  • 使用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; //使用整個(gè)命名空間
	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;
}

4.使用using指示符

標(biāo)準(zhǔn)C++庫(kù)中的所有組件都是在一個(gè)被稱為std的名字空間中聲明和定義的。在采用標(biāo)準(zhǔn)C++的平臺(tái)上使用標(biāo)準(zhǔn)C++庫(kù)中的組件,只要寫一個(gè)using指示符:

using namespace std;

就可以直接使用標(biāo)準(zhǔn)C++庫(kù)中的所有成員。

string

1.string的定義及初始化

定義string的方式跟基本數(shù)據(jù)類型相同,只需要在string后跟上變量名

string s;

初始化:

string str = "yyds";

2.訪問(wèn)string的內(nèi)容

  • 通過(guò)下標(biāo)訪問(wèn),s[i]表示字符串s中下標(biāo)位i的元素

如果要讀入和輸出整個(gè)字符串,則只能使用cin和cout

如果一定要用printf來(lái)輸出string,可以用c_str()函數(shù)將string類型轉(zhuǎn)換為字符數(shù)組進(jìn)行輸出。

printf("%s",str.c_str());
  • 通過(guò)迭代器訪問(wèn)

因?yàn)閟tring不像其他STL容器那樣需要參數(shù),因此可以直接如下定義:

string::iterator it;

這樣就得到了迭代器it,并且可以通過(guò)*it來(lái)訪問(wèn)string里的每一位

3.常用函數(shù)

1.operator+

連接兩個(gè)字符串或者一個(gè)字符串和一個(gè)字符。

2.compare operator

兩個(gè)string類型可以直接使用==、!=、<、<=、>、>=比較大小,比較規(guī)則是字典序。

3.length()/size()兩者返回string的長(zhǎng)度,即存放的字符數(shù)。

4.insert(pos,string)

在pos號(hào)位置插入字符串string

5.insert(it,it2,it3)

it為原字符串的欲插入位置,it2和it3為待插字符串的首位迭代器,用來(lái)表示串[it2,it3)將被插在it的位置上。

6.erase()

刪除單個(gè)元素,str.erase(it)用于刪除單個(gè)元素,it為需要?jiǎng)h除的元素的迭代器。 刪除一個(gè)區(qū)間內(nèi)的所有元素。

7.clear()

用以清空string中的數(shù)據(jù)。

8.substr()

substr(pos,len)返回從pos號(hào)位開始、長(zhǎng)度為len的字串。

9.string::npos

一個(gè)常數(shù),其本身的值為-1,但由于是unsigned_int 類型,因此實(shí)際上也可以認(rèn)為是unsigned_int類型的最大值4294967295。 string::npos用以作為find函數(shù)匹配時(shí)的返回值。

10.find()

str.find(str2),當(dāng)str2是str的子串時(shí),返回其在str中第一次出現(xiàn)的位置;如果str2不是str的子串,那么返回string::npos。 str.find(str2,pos),從str的pos號(hào)位開始匹配str2,返回值與上相同。

11.replace()

str.replace(pos,len,str2)把str從pos號(hào)位開始、長(zhǎng)度為len的子串替換為str2 str.replace(it1,it2,str2)把str的迭代器[it1,it2)范圍的字串替換為str2

12.assign()

str.assign(str.rbegin(),str.rend())可以實(shí)現(xiàn)字符串翻轉(zhuǎn)。

到此這篇關(guān)于C++深入講解namespace與string關(guān)鍵字的使用的文章就介紹到這了,更多相關(guān)C++ namespace與string內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++數(shù)據(jù)結(jié)構(gòu)繼承的概念與菱形繼承及虛擬繼承和組合

    C++數(shù)據(jù)結(jié)構(gòu)繼承的概念與菱形繼承及虛擬繼承和組合

    今天我要給大家介紹C++中更深入的內(nèi)容了。C++這門語(yǔ)言為了使代碼不冗余,做了些什么操作呢?C++的繼承就很好地實(shí)現(xiàn)了類層次的代碼復(fù)用,今天我就要來(lái)和大家好好聊一聊它了
    2022-02-02
  • C++ Array容器的顯示和隱式實(shí)例化詳細(xì)介紹

    C++ Array容器的顯示和隱式實(shí)例化詳細(xì)介紹

    這篇文章主要介紹了C++中Array容器的隱式實(shí)例化和顯式實(shí)例化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)

    C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)

    #pragma用于指示編譯器完成一些特定的動(dòng)作,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • C語(yǔ)言學(xué)習(xí)之柔性數(shù)組詳解

    C語(yǔ)言學(xué)習(xí)之柔性數(shù)組詳解

    結(jié)構(gòu)體的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性數(shù)組。這篇文中主要為大家詳細(xì)介紹了C語(yǔ)言中柔性數(shù)組的相關(guān)知識(shí),需要的可以了解一下
    2023-03-03
  • 詳解C語(yǔ)言中二級(jí)指針與鏈表的應(yīng)用

    詳解C語(yǔ)言中二級(jí)指針與鏈表的應(yīng)用

    對(duì)于初學(xué)者而言,有很多地方肯定是費(fèi)解的。比如函數(shù)的參數(shù)列表的多樣化,動(dòng)態(tài)分配內(nèi)存空間函數(shù)malloc等,其實(shí)這些知識(shí)和指針聯(lián)系緊密,尤其是二級(jí)指針,快跟隨小編來(lái)學(xué)習(xí)一下吧
    2022-07-07
  • 淺析C++中boost.variant的幾種訪問(wèn)方法

    淺析C++中boost.variant的幾種訪問(wèn)方法

    variant類型在C++14并沒有加入,若想在不支持C++17的編譯器上使用variant類型,我們可以通過(guò)boost的variant類型,variant類型可以表示任意一種類型和any類型有些相似,但還是有些區(qū)別下面將淺談variant的幾種訪問(wèn)方法,感興趣的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • C++中指針和引用的區(qū)別分析

    C++中指針和引用的區(qū)別分析

    這篇文章主要介紹了C++中指針和引用的區(qū)別,有需要的朋友可以參考一下
    2014-01-01
  • 一文詳解C++關(guān)鍵詞auto的用法

    一文詳解C++關(guān)鍵詞auto的用法

    在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動(dòng)存儲(chǔ)器的局部變量,但遺憾的是一直沒有人去使用它,在 C++11中,auto不再是一個(gè)存儲(chǔ)類型指示符,而是作為一個(gè)新的類型指示符來(lái)指示編譯器,本文將給大家詳細(xì)的介紹一下C++關(guān)鍵詞auto的用法,需要的朋友可以參考下
    2024-02-02
  • Qt實(shí)現(xiàn)柵格布局效果

    Qt實(shí)現(xiàn)柵格布局效果

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)柵格布局效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法

    C++輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法

    以下是對(duì)C++中輸出斐波那契數(shù)列的兩種實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10

最新評(píng)論