欢迎来观看温柔了岁月.c的博客 目前 设有C++学习专栏 C语言项目专栏 数据结构与算法专栏 目前主要更新C++学习专栏,C语言项目专栏不定时更新 待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏 一周主要三更,星期三,星期五,星期天 感谢大家的支持
string和自动推断类型
string
string本身是一个类,大家学会使用就可以
它的头文件是<string>
创建方式
1. #include<iostream> 2. #include<string> //使用string头文件 3. using namespace std; 4. 5. int main() 6. { 7. //创建方式 8. //1.不赋初值 9. string str1; 10. str1 = "温柔了岁月"; 11. 12. //2.赋初值 13. string str2 = "温柔了岁月"; 14. //3.用另一个字符串赋值来创建 15. string str3(str2); //相当于 str3 = str2; 16. 17. cout << str3 << endl; 18. 19. string str4 = str3; 20. 21. cout << str4 << endl; 22. 23. system("pause"); 24. return 0; 25. }
用string ,赋值的字符串,不用担心大小或者越界的关系,它的大小是系统自动给,动态的
基本操作
比较
1. //比较 2. cout << (str3 >= str4) << endl; // 真,结果为1 3. 4. 5. cout << (str5 >= str4) << endl; //假结果为0
1. //输入 2. string str6; 3. cin >> str6; 4. cout << str6; 5. 6. if (str6 == string("温柔了岁月")) 7. { 8. cout << "正确" << endl; 9. 10. }
强制类型转换(C与C++)
string("温柔了岁月"),这是C++的强制类型转换 ,
C++中: 数据类型(数据);
C语言中:(数据类型) 数据;
连接
1. 2. //连接(用加法) 3. string str7; 4. str7 = "张三"; 5. string str8 = str7 + "很帅"; 6. 7. cout << str8 << endl;
大小计算
1. cout << str7.length() << endl; //当前长度 2. cout << str7.size() << endl; //大下 与长度一样 3. cout << str7.capacity() << endl; //容量
打印
在C++中直接用cout + << 打印即可如果想要用printf()打印, 不能直接使用%s打印,会出现乱码因为在C++中它是一个类,sring.h 在C中,它相当于 char*
可以使用两个函数_str(), date()
1. #include<iostream> 2. #include<string> 3. #include<cstdio> 4. 5. using namespace std; 6. 7. int main() 8. { 9. string str1 = "温柔了岁月"; 10. //printf("%s", str1); //不能直接用%s打印 11. 12. printf("%s\n", str1.c_str()); 13. printf("%s\n", str1.data()); 14. 15. system("pause"); 16. return 0; 17. }
自动推断类型
auto
就是系统自动推断出变量的类型
使用
使用auto,一定要又赋值的操作,变量没有赋值,auto 推不出来,自己就报错
如图所示,a = 9,自动推断出了int 类型
好处
- 如果你不知道这个变量的类型,你可以直接使用auto,进行推断
- 如果这个变量的类型太长,你可以用auto代替,比较简单
当然auto 的应用不只是这几种,还有关于auto的一种新式的for循环,比起传统的更加简单高效这种的后续在进行介绍
decltype
它也是一个自动推断类型,与auto不同的是,它可以进行赋初值,也可以不进行赋初值
人们希望从表达式的类型推断出定义的变量类型,但是不想用该表达式的值初始化变量,为了满足这一要求,所以C++11新标准引入了decltype
使用
decltype((a)) 当里面是双重括号的时候,结果用于是引用decltype(a), 只有当a是引用,它结果才是引用2.基本的用法decltype(a + 1) num; 通过推断表达式a + 1的类型,从而让num也是该类型
1. #include<iostream> 2. 3. using namespace std; 4. 5. int main() 6. { 7. 8. auto a = 9; 9. 10. decltype(123) a = 123; //赋初值 11. 12. decltype(234) num; //不赋初值 13. 14. system("pause"); 15. return 0; 16. }
decltype的好处也是跟auto类型一样的,
你不知道这个变量是什么类型,可以用这个来推