最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++深入講解namespace與string關鍵字的使用

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

namespace

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

1.為什么使用namespace

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

所以namespace就是用來克服這個困難,并被用作額外的信息來區(qū)分類似的函數、類、變量等等,它們在不同的庫中具有相同的名稱。使用名稱空間,你可以定義定義名稱的上下文。

本質上,名稱空間定義了一個范圍。

2.namespace的定義

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

舉例說明:

//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;
	}
}

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; //使用整個命名空間
	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指示符

標準C++庫中的所有組件都是在一個被稱為std的名字空間中聲明和定義的。在采用標準C++的平臺上使用標準C++庫中的組件,只要寫一個using指示符:

using namespace std;

就可以直接使用標準C++庫中的所有成員。

string

1.string的定義及初始化

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

string s;

初始化:

string str = "yyds";

2.訪問string的內容

  • 通過下標訪問,s[i]表示字符串s中下標位i的元素

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

如果一定要用printf來輸出string,可以用c_str()函數將string類型轉換為字符數組進行輸出。

printf("%s",str.c_str());
  • 通過迭代器訪問

因為string不像其他STL容器那樣需要參數,因此可以直接如下定義:

string::iterator it;

這樣就得到了迭代器it,并且可以通過*it來訪問string里的每一位

3.常用函數

1.operator+

連接兩個字符串或者一個字符串和一個字符。

2.compare operator

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

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為需要刪除的元素的迭代器。 刪除一個區(qū)間內的所有元素。

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內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現排雷游戲(多文件)

    C語言實現排雷游戲(多文件)

    這篇文章主要為大家詳細介紹了C語言實現排雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++實現LeetCode(190.顛倒二進制位)

    C++實現LeetCode(190.顛倒二進制位)

    這篇文章主要介紹了C++實現LeetCode(190.顛倒二進制位),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • dev?c++的使用和調試方式

    dev?c++的使用和調試方式

    這篇文章主要介紹了dev?c++?的使用和調試方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 利用C語言編寫“剪刀石頭布”小游戲

    利用C語言編寫“剪刀石頭布”小游戲

    這篇文章主要給大家介紹了關于如何利用C語言編寫“剪刀石頭布”小游戲的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C語言中怎么在main函數開始前執(zhí)行函數

    C語言中怎么在main函數開始前執(zhí)行函數

    C語言中怎么在main函數開始前執(zhí)行函數呢?下面小編就大家詳細的介紹一下。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C/C++程序鏈接與反匯編工具objdump的使用介紹

    C/C++程序鏈接與反匯編工具objdump的使用介紹

    這篇文章主要介紹了C/C++程序鏈接與反匯編工具objdump的使用,程序構建過程的第二個階段就是鏈接,鏈接過程輸入的是目標文件的集合。每個目標文件可以被看作單個源代碼文件的二進制存儲版本
    2023-02-02
  • C語言實現循環(huán)鏈表

    C語言實現循環(huán)鏈表

    這篇文章主要為大家詳細介紹了C語言實現循環(huán)鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 詳解Dijkstra算法之最短路徑問題

    詳解Dijkstra算法之最短路徑問題

    Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節(jié)點到其他所有節(jié)點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。本文將介紹其原理,并用C++實現
    2021-06-06
  • C++對象排序的比較你了解嗎

    C++對象排序的比較你了解嗎

    這篇文章主要為大家詳細介紹了C++對象排序的比較,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++學生信息管理系統(tǒng)

    C++學生信息管理系統(tǒng)

    這篇文章主要為大家想詳細介紹了C++學生信息管理系統(tǒng)的實現代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評論

逊克县| 榕江县| 阿坝县| 阜平县| 宜兴市| 湘西| 英吉沙县| 卫辉市| 容城县| 江永县| 齐齐哈尔市| 西和县| 盐边县| 多伦县| 奉节县| 临海市| 巴塘县| 兴城市| 永泰县| 灵武市| 闸北区| 沙湾县| 慈溪市| 嫩江县| 通榆县| 贞丰县| 天祝| 康平县| 嘉兴市| 潜山县| 英山县| 永平县| 台前县| 虎林市| 焉耆| 石棉县| 合江县| 衢州市| 壶关县| 廊坊市| 乌拉特前旗|