本文地址:http://www.cnblogs.com/archimedes/p/cpp-change1.html,转载请注明源地址

新的初始化方法

C提供的初始化方法

int x = 1024;

C++提供两种初始化方法:

复制初始化(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对象的操作,设有:string s, s1;

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();
2、两个string对象+时,+操作符左右操作数必须至少有一个是string
#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 ;
}
3、string对象下标操作时,任何无符号整型值均可用作下标,但下标的实际类型为string::size_type

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)的更多相关文章

  1. 120项改进:开源超级爬虫Hawk 2.0 重磅发布!

    沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...

  2. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  3. 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  4. ITTC数据挖掘平台介绍(四) 框架改进和新功能

    本数据挖掘框架在这几个月的时间内,有了进一步的功能增强 一. 超大网络的画布显示虚拟化     如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下:   ...

  5. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  6. jqGrid插件getCol方法的一个改进

    jgGrid插件是非常常用的一个基于jQuery的表格插件,功能非常强大.我最近也频繁使用.但是这个插件也有一些不够完善的地方.比如这个getCol方法. getCol方法接受三个参数 colname ...

  7. kaggle入门2——改进特征

    1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...

  8. SQL Server 2016中In-Memory OLTP继CTP3之后的新改进

    SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...

  9. Hadoop学习笔记—21.Hadoop2的改进内容简介

    Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: (1)HDFS的NameNod ...

  10. Java进击C#——语法之知识点的改进

    本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知 ...

随机推荐

  1. jenkins pipelines 简介

    1. 简介:A pipeline就是软件和质量保证进程中的一部分中的自动化连续操作.它可以看成是一连串的脚本. 操作组:就是把一系统的操作可以合成一个个的步骤,如果一个步骤失败,那么后续步骤便不会执行 ...

  2. windbg调试相关命令

    windbg 查找函数:x exe!main* 条件断点打印字符:bp 7199a2b0 ".printf \"message:%ma\", poi(@esp+8);.e ...

  3. VideoView视频缓冲进度条

    效果图: 需求: 刚进入视频播放页时,屏幕中间有加载进度条 视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条 private ObjectAnimator rotate; ImageV ...

  4. JS中关于换行的2个坑

    //第一个为ul/ol使用中的li使用需要注意的地方 1.<ul id="banner_indicator"><li></li><li&g ...

  5. 「CSA49」Card Collecting Game

    「CSA49」Card Collecting Game 题目大意:有 \(n\) 种卡片,每种有 \(b_i\) 张,如果一个人集齐 \(k\) 张第 \(i\) 种卡片,那么其能获得的得分是 \(\ ...

  6. [HDU4609]3-idiots(生成函数+FFT)

    3-idiots Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. 记一次ms16-032成功提权win7/win12

    E:\Tools\提权大结合\ms16-032>whoami pc-20140503jfge\administrator 首先查看权限是administrator 随后溢出 可以看到是syste ...

  8. CXF和Axis2的区别

    1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile.Axis2不支持WS-Policy,但是承诺在下面的版本支 ...

  9. bzoj 1779

    较水的网络流. /************************************************************** Problem: 1779 User: idy002 L ...

  10. 扩展gcd codevs 1213 解的个数

    codevs 1213 解的个数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by ...