这篇文章主要讲解了“c++中namespace与string关键字如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中namespace与string关键字如何使用”吧!names
这篇文章主要讲解了“c++中namespace与string关键字如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中namespace与string关键字如何使用”吧!
首先声明:在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;}}
加名字空间及作用域限定符
使用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;}
标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符:
using namespace std;
就可以直接使用标准C++库中的所有成员。
定义string的方式跟基本数据类型相同,只需要在string后跟上变量名
string s;
初始化:
string str = "yyds";
通过下标访问,s[i]表示字符串s中下标位i的元素
如果要读入和输出整个字符串,则只能使用cin和cout
如果一定要用printf来输出string,可以用c_str()函数将string类型转换为字符数组进行输出。
printf("%s",str.c_str());
通过迭代器访问
因为string不像其他STL容器那样需要参数,因此可以直接如下定义:
string::iterator it;
这样就得到了迭代器it,并且可以通过*it来访问string里的每一位
operator+
连接两个字符串或者一个字符串和一个字符。
compare operator
两个string类型可以直接使用==、!=、<、<=、>、>=比较大小,比较规则是字典序。
length()/size()两者返回string的长度,即存放的字符数。
insert(pos,string)
在pos号位置插入字符串string
insert(it,it2,it3)
it为原字符串的欲插入位置,it2和it3为待插字符串的首位迭代器,用来表示串[it2,it3)将被插在it的位置上。
erase()
删除单个元素,str.erase(it)用于删除单个元素,it为需要删除的元素的迭代器。 删除一个区间内的所有元素。
clear()
用以清空string中的数据。
substr()
substr(pos,len)返回从pos号位开始、长度为len的字串。
string::npos
一个常数,其本身的值为-1,但由于是unsigned_int 类型,因此实际上也可以认为是unsigned_int类型的最大值4294967295。 string::npos用以作为find函数匹配时的返回值。
find()
str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果str2不是str的子串,那么返回string::npos。 str.find(str2,pos),从str的pos号位开始匹配str2,返回值与上相同。
replace()
str.replace(pos,len,str2)把str从pos号位开始、长度为len的子串替换为str2 str.replace(it1,it2,str2)把str的迭代器[it1,it2)范围的字串替换为str2
assign()
str.assign(str.rbegin(),str.rend())可以实现字符串翻转。
感谢各位的阅读,以上就是“C++中namespace与string关键字如何使用”的内容了,经过本文的学习后,相信大家对C++中namespace与string关键字如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: C++中namespace与string关键字如何使用
本文链接: https://lsjlt.com/news/329873.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0