C++对C的改进(1)
新的初始化方法
int x = 1024;
复制初始化(copy-initialization)
如:int x = 1024;
直接初始化(direct-initialization):
如:int x(1024);
注意:
①初始化不是简单地赋值,初始化指声明变量或对象并且赋初值;赋值指用新值覆盖变量或对象当前值。
②直接初始化语法更灵活且效率更高
③初始化内置类型变量两种初始化几乎没有差别对于类类型的初始化,有时只能采用直接初始化(以后讨论)
④两种初始化的方法可以混用(见下例)
合使用初始化的例子:
#include <iostream> using namespace std; int main() {double salary = 9999.99, wage(salary + 0.01);cout<<salary<<" "<<wage<<endl;int interval,month = 8, day = 7, year(2008);cout<<year<<":"<<month<<":"<<day<<":"<<endl; system("PAUSE");return 0; }
新的I/O
C语言的输入输出:
C++语言的输入输出:
C++语言的输入输出:先睹为快
#include <iostream> using namespace std; int main() {int x; double y;/*以下语句等价于printf("请输入两个整数(用逗号隔开):");*/cout << "请输入两个整数(用空格隔开):"; /*以下语句等价于scanf("%d %f", &x, &y);*/cin >> x >> y; /*以下语句等价于printf("x = %d, y = %f\n", x, y);*/cout << "x = " << x << ", y = " << y << endl; system("PAUSE");return 0; }
C++的输入输出:cin,cout的用法
cout<<表达式1<<表达式2<<表达式n;
cin>>变量1>>变量2>>变量n;
cout<<"x + y ="<< x + y << "." << endl; cin >> x >> y;
[注意]
①不能用一个<<输出多个数据项
cout<<a,b,c<<endl; /*错误*/ cout<<a<<b<<c<<endl; /*正确*/
②cin/cout可以分成多行来写
cin>>a>>b>>c; cout<<a<<b<<c;
cout的用法举例:
#include <iostream> using namespace std; int main() {cout << "This is a C++ program! " << endl;cout << "This is"<< " a C++"<< "program!"<< endl;system("PAUSE");return 0; }
cin的用法举例:
int main() { char c1, c2;int a; float b;cin >> c1 >> c2 >> a >> b;cout << "c1 = " << c1 << endl<< "c2 = " << c2 << endl<< "a = " <<a << endl<< "b = " << b << endl;system("PAUSE");return 0;}
cout与输出控制字符:
#include <iostream> #include <iomanip> using namespace std; int main() {int x = 0;cout << "请输入一个八进制整数(以开始):"; cin >> oct >> x; cout << "x的十六进制表示为:" << hex << x << endl;cout << "x的十进制表示为:" << dec << x << endl;cout << "x的八进制表示为:" << oct << x << endl;system("PAUSE");return 0; }
输出控制符:
注意:若用控制符,程序需包含头文件#include<iomanip>
有关类型的区别
有关类型的区别:bool类型
逻辑类型 |
真 |
假 |
|
C |
没提供 |
非0 |
0 |
C++ |
bool |
true |
false |
注意:
1)bool类型的取值只有两种true,false
2)输出时默认输出0或者1
3)用boolalpha可以改变默认的输出方式,noboolalpha可以恢复默认的输出方式
#include <iostream> using namespace std; int main() {bool bval1 = 1 < 2;bool bval2 = true;bool bval3 = false;bool bval4 = 4;bool bval5 = 0;cout << "bval1=" << bval1 << endl;cout << "boolalpha bval1=" << boolalpha << bval1 << endl;cout << "noboolalpha bval1=" << noboolalpha << bval1 << endl;cout << "bval2=" << bval2 << endl;cout << "bval3=" << bval3 << endl;cout << "bval4=" << bval4 << endl;cout << "bval5=" << bval5 << endl;system("PAUSE");return 0; }
有关类型的区别:string类
#include <iostream> #include <string> using namespace std;int main() {string name = "student";string address = "Hebei... ...";cout << name << address <<endl;return 0; }
string对象的定义和初始化:
初始化string对象的方式 |
|
string s1; |
默认构造函数,s1为空串 |
string s2(s1); |
将s2初始化为s1的一个副本 |
string s3("value"); |
用字符串字面值初始化s3 |
String s4(n,'c') |
将s4初始化为字符'c'的n个副本 |
#include <iostream> #include <string> using namespace std; string s0; int main( ) {string s1;//string s2 = "hello world!";string s2("hello world!");//string s3 = s2;string s3(s2);string s4(5, 'r');cout << "s0=" <<s0 <<endl;cout << "s1=" <<s1 <<endl;cout << "s2=" <<s2 <<endl;cout << "s3=" <<s3 <<endl;cout << "s4=" <<s4 <<endl;system("PAUSE");return 0; }
string对象的读写:用cin、cout读写string对象
注意:
cin忽略开头所有空格、TAB、回车符
不接收含空格的字符串
string的I/O:
#include <iostream> #include <string> using namespace std; int main() {string s;cin >> s; //hello world!cout << s <<endl; //hellosystem("PAUSE");return 0; }
string读入未知数目的对象:
#include <iostream> #include <string> using namespace std; int main() {string word;while(cin >> word)cout << word << endl;system("PAUSE");return 0; }
string对象的读写:用getline读取整行文本(含空格)。
#include <iostream> #include <string> using namespace std; int main() {string line;while(getline(cin, line)) cout << line << endl;system("PAUSE");return 0; }
注意:
getline的第一个参数通常为cin, 第二个参数为string对象
从录入数据的下一行读取,可读取 任何字符
getline()以回车作为结束符 (不接受换行符)
getline()不忽略前导回车,若第一 个就是换行符,则置为空串
string的操作 |
|
s.empty() |
若s为空串,则返回true,否则返回false |
s.size() |
返回s中字符的个数 |
s[n] |
返回s中位置为n的字符,位置从0开始 |
s1+s2 |
将两个串连接成新串,返回新生成的串 |
s1 = s2 |
把s1得内容替换为s2的副本 |
v1 == v2 |
判定时候相等,相等返回true,否则返回false |
!= < <= > >= |
保持这些操作惯有的含义,如:s != s2; |
注意:
1、size()的返回类型并非int而是string::size_type类型的值,建议不要把size()的返回值赋值给int变量
string s2 = "hello"; string::size_type count = s2.size();
#include <iostream> #include <string> using namespace std;int main() {string s1 = "hello";string s2 = "world";string s3 = s1 + ",";string s4 = "hello" + "world "; //errorstring s5 = "hello" + s2 + "world" ;system("PAUSE");return 0; }
4、string下标操作可用作左值
int main() { string str = "student";cout << str << endl;for(string::size_type ix = 0; ix!=str.size(); ++ix)str[ix] = 'x';cout << str << endl;system(" PAUSE ");return 0; }
有关类型的区别:枚举
C++对枚举的改进:
①在C++中定义枚举变量可以不用enum
enum weekday {sun, mon, tue, wed, thu, fri, sat}; weekday w; //省略了enum
②无名枚举:不给出枚举类型名和变量,将枚举元素当符号常量用
enum {min = 0, max = 100}; int x = min, arr[max]; ... ...
有关类型的区别:union
C++对联合的扩展:
①无名联合:没有联合体类型名和变量名的联合体
#include <iostream> using namespace std; int main() {union {char c;int i;double d;};c = 'a';cout << c << endl;return 0; }
②定义联合变量无需给出union
#include <iostream> using namespace std; union test { char c;int i;double d; }; int main() {test m = {'a'};cout << m.c << endl;return 0; }
有关类型的区别:struct
C++对结构体的扩展
①定义结构体变量可以不用struct
struct point {double x;int a; }; point p;
②成员可以包含函数定义
struct point{double x,y; //数据成员void setvalue(double a,double b) //成员函数{ x = a; y = b; } };
C++对C的改进(1)相关推荐
- 十大算法,描述+代码+演示+分析+改进(赶紧收藏!)
十大算法 1.冒泡排序 (1)算法描述 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...
- H265与ffmpeg改进开发
H265与ffmpeg改进开发 Introduction KSC265是集编码.解码于一体的H.265编解码软件,完全遵循H.265协议标准.符合H.265编码规范的视频都可以通过KSC265进行解码 ...
- 语义分割改进:通过视频传播和标签松弛
语义分割改进:通过视频传播和标签松弛 Improving Semantic Segmentation via Video Propagation and Label Relaxation 论文地址:h ...
- 《小团团团队》第五次作业:项目需求分析改进与系统设计
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 小团团团队 作业学习目标 (1)掌握面向对象需求分析方法:(2) ...
- #时间预测算法_改进的智慧交通系统出行时间预测算法
引用 Chowdhury N K, Leung C K S. Improved travel time prediction algorithms for intelligent transporta ...
- datax 不识别字段过滤_卷烟厂工艺空调混风段板式过滤器改进与应用
0 引言 为了保证卷烟的品质,卷烟厂在卷烟生产过程中需要利用工艺空调来保持生产环境温湿度的稳定.但由于卷烟生产过程的特殊性,在烟叶烟丝的加工处理阶段.烟丝的运输阶段.卷烟的制作阶段等都会产生大量的粉尘 ...
- 基于熵权法优劣解距离法_维普资讯中文期刊服务平台-基于改进TOPSIS方法的航空装备预研项目技术风险评估...
摘 要:技术风险是引发费用风险和进度风险的主要因素,因此在航空装备的研制中需要重点管控和规避.为提供可靠的航空装备预研项目技术方案的选择依据,采用改进的TOPSIS方法对五种不同航空装备预研方案的技术 ...
- 【目标检测】(8) ASPP改进加强特征提取模块,附Tensorflow完整代码
各位同学好,最近想改进一下YOLOV4的SPP加强特征提取模块,看到很多论文中都使用语义分割中的ASPP模块来改进,今天用Tensorflow复现一下代码. YOLOV4的主干网络代码可见我上一篇文章 ...
- 【目标检测】(6) YOLOV2 目标检测在V1基础上的改进
各位同学好,今天和大家分享一下 YOLOV2 目标检测算法的原理,建议大家先学习一下 YOLOV1,可以看我的上一篇文章:https://blog.csdn.net/dgvv4/article/det ...
- 传统的6d位姿估计fangfa1_基于改进的点对特征的6D位姿估计
来源:公众号|计算机视觉工坊(系投稿) 作者:仲夏夜之星 「3D视觉工坊」技术交流群已经成立,目前大约有12000人,方向主要涉及3D视觉.CV&深度学习.SLAM.三维重建.点云后处理.自动 ...
最新文章
- 发现的bug不能重现怎么办?
- 口袋无人机DOBBY:我的“人脸识别”已上线
- Xamarin.Forms项目无法添加服务引用
- 看懂OpenCV中IplImage转换成CvMat的语句:CvMat sstub, *src = cvGetMat(srcarr, sstub);
- 软件工程-第一次作业
- php basic publish,RabbitMQ入门(PHP语言描述)
- 站点分析基础概念之目标转化率
- 机器学习中的不平衡分类方法(part5)--决策树与随机森林
- 官博翻译 | .NET Core 即 .NET 的未来
- 计算机二级mysql工具_2020年全国计算机二级MySQL复习知识点:优化工具
- Linux下mysql源码包安装
- 块级元素(HTML、CSS)
- php json 小红点,关于PHP的json_encode的一个小技巧
- 跑monkey需要安装什么_智能门锁安装时需要注意什么?
- java程序a-z b-y_请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串..._考试资料网...
- Virtualbox安装Debian 安装VBoxGuestAdditions增强工具
- 最详细最好的Multisim模拟电路仿真教程(附视频教程)
- CISP 考试教材《第 9 章 知识域:计算环境安全》知识整理
- 【图像识别】人脸识别原理及CNN讲解
- C++ placement new 用法
热门文章
- ​​毕业论文选题三步法
- Linux CentOS7 中 完美解决VMTools失效,windows 与 Liunx间完美复制文件,无报错的解决方案
- Matlab | Matlab从入门到放弃(4)——样本均值
- 云服务器上安装jboss_jboss的使用和安装
- 需要在函数中传递的变量
- Java基础day23
- python源码精要(7)-CPython编译
- C指针原理(27)-编译基本原理-语法树及其实现7
- 【机器学习】一文读懂层次聚类(Python代码)
- 【深度学习】ICCV2021|性能优于何恺明团队MoCo v2,DetCo:为目标检测定制任务的对比学习...