文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++深入讲解namespace与string关键字的使用

2024-04-02 19:55

关注

namespace

首先声明:在C++中支持三种域局部域,名字空间,类域。

1.为什么使用namespace

在C++中可能会出现这样的情况:我们正在编写一个名为myj()函数的代码,但是另一个可用的库,它也具有相同的myj()函数。现在编译器无法知道代码中使用的myj()函数是哪个版本。

所以namespace就是用来克服这个困难,并被用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的名称。使用名称空间,你可以定义定义名称的上下文。

本质上,名称空间定义了一个范围。

2.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;
	}
}

3.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的内容

如果要读入和输出整个字符串,则只能使用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类型可以直接使用==、!=、<、<=、>、>=比较大小,比较规则是字典序。

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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯