《Essential C++》学习笔记,Chapter1

@[TOC](《Essential C++》学习笔记,Chapter1),编程基础-C和C++对比

《Essential C++》学习笔记,Chapter1

       通信研一快结束了,想跳槽到CS,为此想学C++,有C的基础,看B站的CodeSheep的推荐先《Essential C++》,也是研究生生活挺闲了,写下学习笔记,希望能坚持下去,加油!
       第一章是基础编程,在有C的基础上,我们更关心C和C++之间编程区别,下面会进行一定对比,也回顾下C的内容(凭记忆)。

1 输入/输出

1.1 输出

       首先是输出语句,学习编程第一件事就是在屏幕上输出一句”Hello world!“,在C语言中会用到stdio.h中的printf()函数

#include<stdio.h>//C
main()
{	
	char str[]="Hellp world!"
	int num=1;
	printf("%s!%d\n",str,num);//输出字符串、变量、换行的方法
}

而在C++中,使用的是iostrem中的cout,具体的

#include<iostream>//C++
int main()
{	
	string str="Hello world!"
	int num=1;
	cout<<str//输出字符串,注意这里是没有分号的
	    <<num//输出变量,类型不限
	    <<'\n';//换行,或输出单个字符,注意这里的分号
}

其中cout读作"see out",我们可以把cout语句想象成屏幕,"<<"是输出方向,上面程序的就是把"Hello world!"输出到屏幕上。另外还要主语多语句输出的时候,在最后加分号。其实cout也经常搭配<<,也可以花点时间记,或者靠代码量。
       通过对比,想要多个语句同时输出,C和C++都有简洁的编程方法,我记得当年用C经常手贱在变量前面加个&!!!

1.2 输入

       C语言使用的scanf语句,为了防止程序太啰嗦,这里只写如何输入,如何输出看1.1。(比如在输入语句前printf提示输入怎样的数据)

#include<stdio.h>//C
main()
{
	int num1,num2;
	char str[128];//必须指定长度
	scanf("%d %d",&num1,&num2)//在输入的时候一定要按照scanf内双引号的格式,比如"%d-%d"就要输入5-3
	scanf("%s",str)//数组名即首地址,or scanf("%s",&str[0])
}

C++就相对简单多了

#include<stdio.h>//C
main()
{
	int num1,num2;
	string str;//必须指定长度
	cin>>num1;cin>>num2;cin>>str;
}

C++就挺简单的,至少不会手贱少打了个&。这里cin读作"see in",和上面一样把cin看作屏幕,把屏幕上的东西输出到num1。

2.if -else if、for、while、switch、数组和指针

C和C++一样,done。

3.向量 vector

       在C的角度看,其实向量就是数组。而在C++中,vector知道更多关于自身的信息,比如尺度、是否为空等,即不用另外编程去判断是否为空,也不用编程计算尺度大小。因为C中没有vector的概念,就不写C的内容的,主要写C++中的vector及注意事项:

#include<vector>
#include<iostream>
void practise1_6_vector()
{
	int number;
	vector<int> ival;
	cout << "Input a number,end with any char\n";
	while (cin >> number)
		ival.push_back(number);
}

vector的赋初始值方式不能像数组一样,即num[4]={1 2 3 4},需要一个个赋值,即num[0]=1,…,num[3]=4,虽然蠢了点,但是其实用循环来实现就好了。
       一个知道自己长度的“数组”有什么用?我觉得是省点工作量吧,不用再编程计算大小,判断是否为空,还有一个用在文件读取也不错的。

4.文件操作

       说实话,C的文件读取要记的太多了,学过几回总是忘,所以我也没法对比了,但是C++给我的体验真的顺心很多
直接贴我的程序吧,夜深了困了- -

void practise1_7_write(string str)
{
	ofstream outfile("text.txt",ios_base::app);//ofstram o开头时输出的意思
	//"text.txt"是文件名,无则创建,ios_bass::app是为了实现增加内容,没有就会覆盖原内容
	if (!outfile)//文件打开失败
		cerr << "Unable to open the file!";//如果终端有显示设备就显示,没有就算了
		//效果和cout一样
	else//打开成功
	{
		outfile << str;
	}
}

void practise1_7_read()
{
	ifstream infile("text.txt");//ifstram i开头表示input
	//"text.txt"是文件名,无则创建,ios_bass::app是为了实现增加内容,没有就会覆盖原内容
	string content;
	vector<string> text;
	if (!infile)//文件打开失败
		cerr << "Unable to open the file!";//如果终端有显示设备就显示,没有就算了
		//效果和cout一样
	else//打开成功
	{
		while (infile >> content)//infile指代"text.txt"文件
		//,可以看作把内容从文件中读出来放在名为content的vector中
		{
			text.push_back(content);
			cout << text[text.size() - 1] << ' '; 
		}
	}
}

在C语言中,对文件操作我记得需要授权“r,w,a+,r+”,fclose、fopen调用很多函数。在C++用ifstream表示读入,oifstream表示写,要追加内容就像上述程序注释一样就好了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值