C++基础(一)

1、顶层const与底层cosnt

  • 顶层是针对于指针或者引用而言,任何类型都可以是顶层const;

  • 底层是针对指针对象或引用对象而言。

for example:

int i = 0;
int * const p1 = &i; //顶层const,不可以改变p1的值
const int j = 1;    //顶层const
const int *p2 = &j; //底层const,可以改变p2所指对象,但不能改变j的值

2、命名空间using namespace的注意事项

  在头文件中一般不添加using声明。原因是一旦其他文件包含了此头文件,也就等同于添加了using声明,而对有些程序而言,不经意间添加的命名空间,可能会引起变量命名冲突。

3、字符串

  • 字符串的初始化有两种方式,一种是直接初始化,另一种是拷贝初始化。
string s1 = "hello";//拷贝初始化;
string s2(5,'c');   //直接初始化,s2="ccccc";

getline(输入流,string对象)

  可以获得一行。读的时候把换行符也读入,但是对象中存入的内容不包括换行符。例如下面的例子可以整行读入。

#include <iostream>
#include <string>

using namespace std;
{
	string myline;
	while(getline(cin,myline))
		cout<<myline<<endl;//myline中不包括换行符
		//所以使用endl结束当前行并刷新显示缓冲区
	return 0;
}
 

string对象相加

  加号两侧可以是两个string对象,也可以是一个string对象,一个string字面值,但不能是两个string字面值。如:

string s1 = "Hello";
string s2 = " ,Word!";
string s3 = s1 + s2; //正确
string s4 = s1 + ",word!"//正确
string s5 = "Hello" + " ,word!";//错误
/*在python中可以两个字面值相加。*/

cctype

  C++中的库。一般而言,C中的库包含.h,即name.h,而C++中的则为cname。另外,C++中的库名称命名在命名空间中,C的则不然。
  下面是一个统计标点符号个数的例子:

string s = "Hello World!!!";

decltype(s.size())  punct_count = 0;//punct_count 的类型和s.size()的返回类型一致。

for(auto c : s)  //定义auto类型变量c,并逐个从s的字符中赋值
	if(ispunct(c))
		punct_count++;

cout<<punct_count<<"puncts in string:"<<s<<endl;
//输出:3 puncts in string Hello World!!!

strstr

  strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。

snprintf

  int snprintf(char* dest_str,size_t size,const char* format,…);
  将可变个参数(…)按照format格式化成字符串,然后将其复制到str中。

char str[16];
snprintf(str,5,"%03d",12); 
printf("str=%s\n",str) //str=012, %03d表示传入数据不足3位时用0补充

snprintf(str,5,"%03d",1234567);
printf("str=%s\n",str) //str=12345, 第二个数5是控制str最大宽度的。

strrchr

strrchr(string,char) 函数查找字符在指定字符串中从右面开始的第一次出现的位置,如果成功,返回该字符以及其后面的字符,如果失败,则返回 NULL。与之相对应的是strchr()函数,它查找字符串中首次出现指定字符以及其后面的字符。

4、vector

string word;
vector<string> text;
while (cin>>word)
	text.push_back(word);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值