【C++学习之路】二、C++中的一些基本操作

在上一篇文章中,我们成功配置了环境,运行起了我们的第一个C++程序,也成功地解决了中文乱码的问题,那现在,就让我们一起来学习C++的一些基本操作吧。

一、输入输出(I/O)

C++ 的 I/O 发生在流中,流是字节序列。
如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
I/O 库头文件:

头文件函数和描述
<iostream>该文件定义了 cin、cout、 cerr 和 clog 对象,分别对应于标准输入流、标准输出流、 缓冲标准错误流和缓冲标准错误流。
<iomanip>该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。
<fstream>该文件为用户控制的文件处理声明服务。

1、标准输出流(cout)

预定义的对象 cout 是 iostream 类的一个实例。 cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的, 如下所示:

#include <iostream>//头文件
using namespace std;

int main( ){
   char str[] = "Hello C++";
   cout << "Value of str is : " << str << endl;
   system("pause");
}

执行结果:

Value of str is : Hello C++

其实我们在上一篇的第一个程序中就已经使用过它了,不过这里我们可以从这个例子中学到: 流插入运算符 << 在一个语句中可以多次使用;endl用于在行末添加一个换行符。

2、标准输入流(cin)

预定义的对象 cin 是 iostream 类的一个实例。 cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的, 如下所示:

#include <iostream>
using namespace std;

int main(){
    char name[50];
    cout << "请输入您的姓名: ";
    cin >> name;
    cout << "Hello," << name << "!" << endl;
    system("pause");
    return 0;
}

执行结果:
在这里插入图片描述
程序执行时,程序会请求我们输入姓名,当我们输入名字并按下回车时,C++ 编译器就会根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中(此例中为name),然后通过标准输出流(cout)将其显示出来。

与流插入运算符 << 一样,流提取运算符 >> 也可以在一个语句中多次使用。

二、数据类型

1.基本的内置类型

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t

各种变量类型在内存中存储值时需要占用的内存是不一样的,具体信息可前往: 菜鸟教程 |C++数据类型

一些基本类型可以使用一个或多个类型修饰符进行修饰:

修饰符描述
signed表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。
unsigned表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。
short表示变量的范围比 int 更小。short int 可以缩写为 short。
long表示变量的范围比 int 更大。long int 可以缩写为 long。
long long表示变量的范围比 long 更大。C++11 中新增的数据类型修饰符。

默认情况下,int、short、long都是带符号的,即 signed。

2.常量

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。

常量的定义方式:

  • 使用 #define 预处理器。
  • 使用 const 关键字。

请注意,把常量定义为大写字母形式,是一个很好的编程风格。

3.类型转换

C++ 中有四种类型转换:静态转换、动态转换、常量转换和重新解释转换。这里我们主要先看一下静态转换(Static Cast):

  • 静态转换是将一种数据类型的值强制转换为另一种数据类型的值。
  • 静态转换通常用于比较类型相似的对象之间的转换,例如将 int 类型转换为 float 类型。
  • 静态转换不进行任何运行时类型检查,因此可能会导致运行时错误。
//实例:
int i = 10;
float f = static_cast<float>(i); // 静态将int类型转换为float类型

三、数组和字符串

1.数组

数组的声明:
在 C++ 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:

type arrayName [ arraySize ];

这是一个一维数组,arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。

除了数组定义时与Java有些许的差别,其他有关数组的操作(初始化,数组的访问…)大致上还是一样的,就不过多赘述了。

2.字符串

C++ 提供了以下两种类型的字符串表示形式:

  • C 风格字符串
  • C++ 引入的 string 类类型.

(1)C 风格字符串

C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。
字符串的声明:

char arr[] = "Hello";

我们来看一下这个字符串的总长度:

#include <iostream>
using namespace std;

int main(){
    char arr[] = "Hello";
    int len = sizeof(arr);
    cout << len << endl;
    system("pause");
}

执行结果:

6

这是因为C++ 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。 由于在数组的末尾存储了空字符,所以字符数组的大小比单词 Hello 的字符数多一个。其实上面的声明就相当于:

char arr[] = {'H','e','l','l','o','\0'};

想排除\0对于字符串长度的影响,我们可以使用C++中自带的strlen函数:(需要引入头文件<string.h>)

#include <iostream>
#include <string.h> // 函数strlen所属的头文件
using namespace std;

int main(){
    char arr[] = {'H','e','l','l','o','\0'};
    cout << strlen(arr) << endl;
    system("pause");
}

执行结果:

5

C++ 中还提供了大量的函数用来操作以 null 结尾的字符串:

函数目的
strcpy(s1, s2);复制字符串 s2 到字符串 s1
strcat(s1, s2);连接字符串 s2 到字符串 s1 的末尾(也可以用 + 号连接两个字符串)
strlen(s1);返回字符串 s1 的长度
strcmp(s1, s2);如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0
strchr(s1, ch);返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置
strstr(s1, s2);返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置

(2)C++ 中的 String 类

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。 类是 C++ 的核心特性,通常被称为用户定义的类型。

类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。

总的来说,String类的出现比C标准库中提供的str系列的库函数更能契合C++面向对象的这一思想。

因为之前用Java比较多,就不细追类和对象,大家可以自行了解学习。

String类的使用:

#include <iostream>
#include <string> //sting类的头文件
using namespace std;

int main(){
    string str = "gaga";
    cout << str.length() << endl;
    cout << str << endl;
    system("pause");
}

执行结果:

4
gaga

四、其他

除了上述的一些内容,C++中还有循环(或许后续会出一篇讲解排序方法的文章),判断,指针(这个比较重要,下一篇讲),运算符,函数等许多基础内容,因与Java中差别不大,就不进行详细的讲述了。

以上内容谨为个人学习过程的记录,欢迎大家一起学习和指正

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘎嘎学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值