c++小知识点

本文涵盖了C++的一些基础知识,包括基本数据类型的使用,如需要注意的整型范围和长整型表示。还讨论了输出格式控制,如对齐方式和填充。接着介绍了<cmath>头文件中的数学函数,以及一些字符处理函数。此外,文章提到了字符串操作,如初始化、数值转换,以及如何使用`for`循环的新方法。最后,文章讲解了C++的位运算,特别是`bitset`中的各种操作,如设置、重置和翻转位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++小知识点
基本数据类型

**对于整型来说:**绝对值在10^9范围以内可以定义成int型,在10^18范围以内定义成long long型,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFiCpDIv-1592110805047)(https://s2.ax1x.com/2020/02/08/1RAEKs.png)]

注意:若long long型赋值大于2^31-1的初值,需要在初值后面加上LL,否则会编译错误

printf输出格式

%md不足m位的int型变量以m位右对齐输出,%-md以左对齐方式输出, 若数值大于m位,保持原样输出

%0md变量不足时用0填补

%.mf让浮点数保留m为小数

常用的math函数:头文件cmath
fabs(double x);//对double取绝对值

floor(double x);//对x向下取整

ceil(double x);//对x向上取整

pow(double r,double p);//r^p 

sqrt(double x);//算数平方根

log(double x);//以自然对数为底的对数

sin(double x)、cos(double x)、tan(double x)//正弦、余弦、正切值

asin(double x)、acos(double x)、atan(double x)//反正弦、反余弦、反正切

round(double x);//对x四舍五入

注意:上面函数要求xdouble

头文件cctype中的一些函数

总的来说常用的只有以下几个

isalpha字母(包括大小写)

islower(小写字母)

isupper(大写字母)

isalnum(字母大小写+数字)

isdigit(检查是否为数字)

isblank(space和\t

isspace(space\t\r\n)

tolower(转为小写字母)

toupper(转为大写字母)

string常用功能

https://zh.cppreference.com/w/cpp/string/basic_string

1、初始化

string s;//默认初始化,一个空字符串

string s1("ssss");//s1是字面值“ssss”的副本

string s2(s1);//s2是s1的副本

string s3=s2;//s3是s2的副本

string s4(10,'c');//把s4初始化,长度为10的 c的字符串

string s5="hiya";//拷贝初始化

string s6=string(10,'c');//拷贝初始化,生成一个初始化好的对象,拷贝给s6

 //char cs[]="12345";
string s7(cs,3);//复制字符串cs的前3个字符到s当中

// string s8="asac";
string s9(s8,2);//从s8的第二个字符开始拷贝,不能超过s8的size

//string s10="qweqweqweq";
string s11(s10,3,4);//s11是s10从下标3开始4个字符的拷贝,超过s10.size出现未定义

//字符串中的find函数,若找不到字符,会返回string::npos,即是-1;
string s1=“hello,word";
if(s1.find(h)!=string:npos)
    flag=1;
string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。
这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置;
或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。
    
s1.erase(4,1);//去除4位置上 一个字符
s1.erase(3);//从位置3开始去除字符到结尾


//在0位置插入len个'0'
s.insert(0,len,'0');

sort(s1.begin(),s1.end(),cmp);//给s1字符串中排序

2、数值转换:在头文件string中

|—stoi(s,p,b) 把字符串s从p开始转换成b进制的int;

|—stol(s,p,b) long;

|—stof(s,p) float;

|—stod(s,p) double

当然,也可以由其它类型转换成string类型(头文件)

to_string

3、函数

string s="ahahahhaaha";
s.length() s.size()//取串的长度

string s2=s.substr(4);//从下标4开始一直到结束
string s3=s.substr(5,3) //从下标5开始 截取3个字符
 

s.append(s2);//append()函数可以用来在字符串的末尾追加字符和字符串。由于string重载了运算符,也可以用+=操作实现

s.find("ha",3)//从位置3开始查找“ha”子串
s.find*()

s.compare(s2)//和strcmp函数一样,如果两个字符串相等,那么返回0,调用对象大于参数返回1,小于返回-1
for的新的运用方式
int arr[4] = {0, 1, 2, 3};
for (int i : arr)
cout << i << endl; // 输出数组中的每⼀一个元素的值,每个元素占据⼀行,但是只能用于输出,而不能用于修改数组元素中的值

int arr[4]={0,1,2,3};
for(int &i:arr)
    i=i*2;	//利用引用可以修改数组中的值
c++的位运算

位于头文件bitset中

#include<iostream>
#include<bitset>
using namespace std;
int main(){
    bitset<5> b("11");//表示五个二进制位
    //初始化方式:
    //bitset<5> b(u);u为unsigned int,如果u=1,则b的输出结果为00001
    //bitset<8> b(s);s为字符串,如“1101”,b的输出结果为00001101
    //bitset<5> b(s,pos,n);从字符串的s[pos]开始,N为长度
      
    //注意,bitset相当于一个数组,但是它是从二进制的低位到高位存储的
    //所以按照正常的输入方式与b的结果是相反的
    cout<<b<<endl; // 如果bitset<5> b("11"); 则此处输出00011(即正常⼆二进制顺序)
    for(int i = 0; i < 5; i++)
		cout << b[i]; // 如果bitset<5> b("11"); 则此处输出11000(即正常⼆二进制顺序的倒
序)
	cout << endl << b.any(); //b中是否存在1的⼆二进制位
	cout << endl << b.none(); //b中不不存在1吗?
	cout << endl << b.count(); //b中1的⼆二进制位的个数
	cout << endl << b.size(); //b中⼆二进制位的个数
	cout << endl << b.test(2); //测试下标为2处是否⼆二进制位为1
	b.set(4); //把b的下标为4处置1
	b.reset(); //所有位归零
	b.reset(3); //b的下标3处归零
	b.flip(); //b的所有⼆二进制位逐位取反
	unsigned long a = b.to_ulong(); //b转换为unsigned long类型
	return 0;
}

st(2); //测试下标为2处是否⼆二进制位为1
b.set(4); //把b的下标为4处置1
b.reset(); //所有位归零
b.reset(3); //b的下标3处归零
b.flip(); //b的所有⼆二进制位逐位取反
unsigned long a = b.to_ulong(); //b转换为unsigned long类型
return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值