本文地址: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. linux 笔记(一)

    1.Linux 安装3ython3 1.1 下载 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 1.2 解压 tar -z ...

  2. windows下运行命令行mysql,提示mysql不是内部命令,解决办法

    1. 打开CMD命令行,连接本地mysql数据库:mysql -u root -p 提示‘mysql’不是本地命令,解决办法如下: 找到你安装的mysql的目录,打开当前目录下的bin文件夹,你可以看 ...

  3. 图解安装CLion编写程序并进行单元测试

    我对JetBrains公司的IDE情有独钟,于是这里使用的IDE是CLion,CLion是以IntelliJ为基础,专为开发C及C++所设计的跨平台IDE,可以在Windows.Linux及MacOS ...

  4. [C#] 实现可设置超时的 Task

    前言 如何实现支持超时的 Task ? 关键点: Task.WhenAny 实现 一个扩展方法就可以搞定. // 有返回值 public static async Task<TResult> ...

  5. 力扣:丑数II和数组中前K大的元素

    数组中的第K个元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k ...

  6. PHP_EOL 换行符

    换行符unix系列用 \nwindows系列用 \r\nmac用 \rPHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性 如:  <?php    echoPHP_EOL;    ...

  7. Eclipse下使用Stanford CoreNLP的方法

    源码下载地址:CoreNLP官网. 目前release的CoreNLP version 3.5.0版本仅支持java-1.8及以上版本,因此有时需要为Eclipse添加jdk-1.8配置,配置方法如下 ...

  8. poj 1743 后缀数组 求最长不重叠重复子串

    题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题. “主题”是整个音符序列的一个子串,它需要满足如下条件:1 ...

  9. bzoj 2809: [Apio2012]dispatching -- 可并堆

    2809: [Apio2012]dispatching Time Limit: 10 Sec  Memory Limit: 128 MB Description 在一个忍者的帮派里,一些忍者们被选中派 ...

  10. 模板引擎之hogan.js

    hogan.js 语法简单,且支持循环数据: 基本语法: 1. 标签可以嵌套使用 2. {{data}} 转义的变量,不会渲染html标签 3. {{{data}}} 不转义的变量,会渲染html标签 ...