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 = , day = , year();
cout<<year<<":"<<month<<":"<<day<<":"<<endl;
system("PAUSE");
return ;
}
新的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 ;
}
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 ;
}
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 ;
}
cout与输出控制字符:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int x = ;
cout << "请输入一个八进制整数(以开始):";
cin >> oct >> x;
cout << "x的十六进制表示为:" << hex << x << endl;
cout << "x的十进制表示为:" << dec << x << endl;
cout << "x的八进制表示为:" << oct << x << endl;
system("PAUSE");
return ;
}
输出控制符:


注意:若用控制符,程序需包含头文件#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 = < ;
bool bval2 = true;
bool bval3 = false;
bool bval4 = ;
bool bval5 = ;
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 ;
}
有关类型的区别:string类
#include <iostream>
#include <string>
using namespace std; int main()
{
string name = "student";
string address = "Hebei... ...";
cout << name << address <<endl;
return ;
}
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(, 'r');
cout << "s0=" <<s0 <<endl;
cout << "s1=" <<s1 <<endl;
cout << "s2=" <<s2 <<endl;
cout << "s3=" <<s3 <<endl;
cout << "s4=" <<s4 <<endl;
system("PAUSE");
return ;
}
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; //hello
system("PAUSE");
return ;
}
string读入未知数目的对象:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word;
while(cin >> word)
cout << word << endl; system("PAUSE");
return ;
}
string对象的读写:用getline读取整行文本(含空格)。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
while(getline(cin, line))
cout << line << endl;
system("PAUSE");
return ;
}
注意:
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 "; //error
string s5 = "hello" + s2 + "world" ;
system("PAUSE");
return ;
}
4、string下标操作可用作左值
int main()
{
string str = "student";
cout << str << endl;
for(string::size_type ix = ; ix!=str.size(); ++ix)
str[ix] = 'x';
cout << str << endl; system(" PAUSE ");
return ;
}
有关类型的区别:枚举
C++对枚举的改进:
①在C++中定义枚举变量可以不用enum
enum weekday
{sun, mon, tue, wed, thu, fri, sat};
weekday w; //省略了enum
②无名枚举:不给出枚举类型名和变量,将枚举元素当符号常量用
enum
{min = , max = };
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 ;
}
②定义联合变量无需给出union
#include <iostream>
using namespace std;
union test
{
char c;
int i;
double d;
};
int main()
{
test m = {'a'};
cout << m.c << endl;
return ;
}
有关类型的区别: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)的更多相关文章
- 120项改进:开源超级爬虫Hawk 2.0 重磅发布!
沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法
转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...
- ITTC数据挖掘平台介绍(四) 框架改进和新功能
本数据挖掘框架在这几个月的时间内,有了进一步的功能增强 一. 超大网络的画布显示虚拟化 如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下: ...
- C# 3.0新语言特性和改进(一)
引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...
- jqGrid插件getCol方法的一个改进
jgGrid插件是非常常用的一个基于jQuery的表格插件,功能非常强大.我最近也频繁使用.但是这个插件也有一些不够完善的地方.比如这个getCol方法. getCol方法接受三个参数 colname ...
- kaggle入门2——改进特征
1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...
- SQL Server 2016中In-Memory OLTP继CTP3之后的新改进
SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...
- Hadoop学习笔记—21.Hadoop2的改进内容简介
Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: (1)HDFS的NameNod ...
- Java进击C#——语法之知识点的改进
本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知 ...
随机推荐
- Xpath,XQuery,DTD
一.Xpath XPath 是一门在 XML 文档中查找信息的语言;XPath 是 XSLT 中的主要元素.XPath是W3C标准.1.七种类型节点:元素.属性.文本.命名空间.处理指令.注释.文档节 ...
- POJ 2019 Cornfields [二维RMQ]
题目传送门 Cornfields Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7963 Accepted: 3822 ...
- 火焰图&perf命令
最近恶补后端技术,发现还是很多不懂,一直写业务逻辑容易迷失,也没有成长.自己做系统,也习惯用自己已知的知识来解决,以后应该多点调研,学到更多的东西应用起来. 先学一个新的性能分析命令. NAME pe ...
- 运用jquery做打印和导出操作
我最近接手的项目中经常让做出打印和导出统计图和表格 首先说打印,打印如果用echarts做出来的图表,打印的时候,要借助jquery的打印插件. 打印插件: <script src=" ...
- 阿里云提示Discuz memcache+ssrf GETSHELL漏洞如何解决
一般这个漏洞都是下面文件,source/function/function_core.php 搜索下面代码: $content = preg_replace($_G['setting']['outpu ...
- FastReport.Net使用:[7]打印空白行
方法一:使用子报表的最少数据行属性 1.以前面的[简单报表一]为例,右键“数据区”在右键菜单中选择“Add Child Band”菜单添加子报表. 2.为原报表添加一列[序号],使用系统变量中的行号( ...
- [USACO06FEC]Milk Patterns --- 后缀数组
[USACO06FEC]Milk Patterns 题目描述: Farmer John has noticed that the quality of milk given by his cows v ...
- HDU 6134 Battlestation Operational(莫比乌斯反演)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6134 [题目大意] 求$\sum_{i=1}^{n}{\sum_{j=1}^{i}\lceil{\ ...
- HDU 6084 寻找母串(卡特兰数)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6084 [题目大意] 对于一个串S,当它同时满足如下条件时,它就是一个01偏串: 1.只由0和1两种 ...
- Android Studio NDK开发浅谈
环境: Android Studio 1.1.0 NDK-r10d 1.新建项目--->包名:com.mxl.az.ndk 新建包含native方法的类:JniOperation.class p ...