文章目录
- 1、C++程序结构
- 1.1 C++程序的基本组成部分
- 1.2 预处理指令
- 1.3 注释
- 1.4 main() 主函数
- 1.5 命名空间 namespace
- 2、 C++的变量和常量
- 2.1 变量
- 2.2 变量的声明
- 2.3 变量的类型
- 3、C++ 数组和容器
- 3.1 数组(array)
- 3.2 容器(vector)
- 4、C++ 程序流程
- 4.1 if else
- 4.2 switch
- 4.3 for循环
- 4.4 while 循环
- 4.5 do-while
- 5、C++ 字符和字符串
- 5.1 C++借用C⻛格字符串
- 5.2 C++⻛格字符串
1、C++程序结构
1.1 C++程序的基本组成部分
A、关键字
B、标识符、操作符、标点
1、include,main,cin,cout,favorite_num是标识符,
2、 + - * /,<<(流插入),>>(流提取),::(作用域运算符,表示一种从属的关系)等是操作符,
3、 ;和()以及{}是标点,
4、int,return是关键字,
标识符和关键字的区别:
标识符是程序员自己定义的,主要用来标识变量,函数,类,模块等用户定义项的名称;
1.2 预处理指令
1、它指示编译器在实际编译开始之前预处理信息,
2、以#开头,不以分号 ; 结尾,
3、并不理解C++语法
1.3 注释
1.4 main() 主函数
一个C++程序必须有且只能有一个main函数,当程序运行时main函数会被操作系统所调用,
例子1:
#include<iostream>
using namespace std;int main()
{cout << "hello now" << endl;return 0;
}
输出:
hello now
例子2,程序本身也是一个参数,
#include <iostream>
using namespace std;int main(int argc, char **argv)
{cout << "参数数量:"<<argc <<endl;cout << "======参数列表======"<<endl;for (int i {0};i<argc; i++){cout << "参数:"<<argv[i] <<endl;}
}
输出:
参数数量:1
======参数列表======
参数:c:\Users\22828\Desktop\CPP_project\course_2\src\2.main_type
1.5 命名空间 namespace
为了避免自己写的代码和别人写的代码的命名冲突,所以引入命名空间,
以下是命名空间的2种使用方式,
2、 C++的变量和常量
2.1 变量
用名称代替地址访问变量
1、变量是内存地址的抽象
2、变量有2个重要的属性:
Type:变量类型(integer、real number、string、Person、Student)
Value:变量值(1,3.14,”computer”)
2.2 变量的声明
也可以使用自定义的类来定义数据类型,
变量的初始化
推荐采用C++11标准初始化,如果没有进行初始化,编译器会给出一个随机的数字,比如0,
一个例子:
#include <iostream>
using namespace std;// 这个例子可以计算房间面积
int main()
{int room_width {0};cout << "请输入房间的宽度:";cin >> room_width;int room_length {0};cout << "请输入房间的长度:";cin >> room_length;cout << "房间面积是:" << room_width * room_length << "平方米" << endl;return 0;}
2.3 变量的类型
• 字符型(character):char
• 整型(integer):short、int、long、long long
• 浮点型(floating point):float、double
• 布尔型(Boolean):bool
不同类型的分配内存⼤⼩和取值范围和OS平台和编译器版本有关
首先介绍一下Bits(⽐特) & bytes(字节)
• 1⽐特是存储的最⼩单位
• 1⽐特只能存储0或者
• 模式数量 = 2 比特数量 2^{比特数量} 2比特数量
• 1字节 = 8⽐特
• 1字节能表达的模式数量 = 2^8 = 256个
• 可以⽤来存储 0-255 数字
• 适合存储字符(characters)/ 字⺟(letters)
A、 字符型
• 作⽤:⽤于表示单个字符,如’@’, ’a’, ’X’
• 只占⽤1个字节
• 语法:char c = ‘a’;
• 注意:
• 需要和字符串区分开,⽤单引号不是双引号
• 存储的是字符的ASCII编码,⽽不是字符本身
ASCII编码:
B、整型
作⽤:表示整数类型的数据
C、浮点型
• 作⽤:表示⼩数
• 浮点型主要有2种:float(单精度)、double(双精度)
• 注意:有效数字包含整数部分,⽐如3.14159 是6个有效数字
D、布尔型(Boolean)
• 作⽤:表示真(true)或者假(false)
• 占⼀个字节
• 0表示假,⾮0表示真
• 语法:bool add_to_cart {false};
代码:
#include <iostream>
using namespace std;int main(){// 字符型cout << "====================" << endl;char my_char {'j'}; // 注意是单引号,双引号是string类型cout << "my char: " << my_char << endl;// 整型cout << "====================" << endl;short my_score {59}; cout << "my score: " << my_score << endl;// = 与 {} 的区别// short 范围-32768(-2^15) to 32767(2^15-1),overflow溢出案例short overflow_num_1 = 32768; // 不会报错,但是值会变成-32768cout << overflow_num_1 << endl; // -32768// short overflow_num_2 {32768}; // 编译器会做校验,会报错,所以推荐使用{}// cout << overflow_num_2 << endl; // -32768int my_height {178};cout << "my height: " << my_height << endl;long people_in_hangzhou {10360000};cout << "people in hangzhou: " << people_in_hangzhou << endl;long long people_on_earth {80'0000'0000}; // 为方便阅读c++ 14标准后支持'数字分割cout << "people on earth: " << people_on_earth << endl;// 浮点型cout << "====================" << endl;float book_price {32.23f}; // 加上f表示float类型,因为默认是double类型cout << "book price: " << book_price << endl;double pi {3.14149};cout << "pi: " << pi << endl;// 布尔型cout << "====================" << endl;bool add_to_cart {false};// cout << boolalpha; // 以bool的形式输出cout << "add to cart: " << add_to_cart << endl; // 0表示falsereturn 0;
}
E、sizeof和climits
代码:
#include <iostream>
#include <climits>using namespace std;int main()
{cout << "size information" << endl;cout << "================================================================" << endl;cout << "char:" << sizeof(char) << " bytes." << endl;cout << "short:" << sizeof(short) << " bytes." << endl; cout << "int:" << sizeof(int) << " bytes." << endl;cout << "long:" << sizeof(long) << " bytes." << endl;cout << "long long:" << sizeof(long long) << " bytes." << endl;cout << "================================================================" << endl;cout << "float:" << sizeof(float) << " bytes." << endl;cout << "double:" << sizeof(double) << " bytes." << endl;cout << "================================================================" << endl;cout << "min and max value defined in climits" << endl;cout << "char min:" << CHAR_MIN << ",char max:" << CHAR_MAX << endl;cout << "short min:" << SHRT_MIN << ",short max:" << SHRT_MAX << endl; cout << "int min:" << INT_MIN << ",int max:" << INT_MAX << endl;cout << "long min:" << LONG_MIN << ",long max:" << LONG_MAX << endl;cout << "long long min:" << LLONG_MIN << ",long long max:" << LLONG_MAX << endl;cout << "================================================================" << endl;cout << "sizeof using variables" << endl;int age {31};cout << "age is " << sizeof(age) << " bytes" << endl;double salary {22.34};cout << "salary is " << sizeof(salary) << " bytes" << endl;return 0;}
输出:
size information
================================================================
char:1 bytes.
short:2 bytes.
int:4 bytes.
long:4 bytes.
long long:8 bytes.
================================================================
float:4 bytes.
double:8 bytes.
================================================================
min and max value defined in climits
char min:-128,char max:127
short min:-32768,short max:32767
int min:-2147483648,int max:2147483647
long min:-2147483648,long max:2147483647
long long min:-9223372036854775808,long long max:9223372036854775807
================================================================
sizeof using variables
age is 4 bytes
salary is 8 bytes
F、常量
作⽤:记录不可更改的数据,防⽌变量误修改
代码:
#include <iostream>
using namespace std;int main()
{const double pi {3.14159}; // 常量cout << "输入半径: ";double radius {0};cin >> radius;cout << "圆的面积是: " << pi * radius * radius << endl;return 0;
}
3、C++ 数组和容器
3.1 数组(array)
• 数组所有元素都是同⼀个数据类型
• 每个元素可以单独读取
• ⻓度⼤⼩固定,且不可以再修改
• 所有元素是同⼀类型
• 元素在内存中是连续存储的
• 声明array时,内存中会分配⼀块区域来存储
• 可以使⽤存储的索引位置来获取元素(从0开始,最后⼀个元素索引为 size -1)
• 不检查是否超出区域(超出⻓度获取元素可能会报错)
A、数组的声明
elementType array_name [size];
elementType表示数组中元素的类型,array_name表示数组的名字,size表示数组的大小,
B、数组的初始化
elementType array_name [size] {初始化列表};
C、数组元素的获取及更新
代码:
#include <iostream>
using namespace std;int main(){char vowels[] {'a', 'e', 'i', 'o', 'u'};cout << "元音字母第1个字母为:" << vowels[0] << endl;cout << "元音字母第5个字母为:" << vowels[4] << endl;// cin >> vowels[5]; // 试图访问数组的第6个元素,程序会崩溃double hi_temps[] {90.1, 89.8, 77.5, 81.6};cout << "第1天的最高温度为:" << hi_temps[0] << endl;hi_temps[0] = 100.7; // 修改第1天的最高温度cout << "第1天的最高温度为:" << hi_temps[0] << endl;cout << "第6天的最高温度为:" << hi_temps[5] << endl; // 越界访问,可能会得到一个随机值cout << "=====================" << endl;// int student_scores [5]; // 5个整数的数组,但是没有初始化,数组中的值是未定义的// cout << "第1个学生的成绩为:" << student_scores[0] << endl; // 未初始化的数组中的值是未定义的int student_scores [5] {}; // 5个整数的数组,初始化为0// int student_scores [5] {100}; // 5个整数的数组,初始化为100,其他元素初始化为0,并不是所有的元素都初始化为100cout << "第1个学生的成绩为:" << student_scores[0] << endl;cout << "第2个学生的成绩为:" << student_scores[1] << endl;cout << "第3个学生的成绩为:" << student_scores[2] << endl;cout << "第4个学生的成绩为:" << student_scores[3] << endl;cout << "第5个学生的成绩为:" << student_scores[4] << endl;cout << "重新输入5个学生的成绩:";cin >> student_scores[0];cin >> student_scores[1];cin >> student_scores[2];cin >> student_scores[3];cin >> student_scores[4];cout << "更新后的成绩:" << endl;cout << "第1个学生的成绩为:" << student_scores[0] << endl;cout << "第2个学生的成绩为:" << student_scores[1] << endl;cout << "第3个学生的成绩为:" << student_scores[2] << endl;cout << "第4个学生的成绩为:" << student_scores[3] << endl;cout << "第5个学生的成绩为:" << student_scores[4] << endl;cout << "数组名称为:" << student_scores << endl; // 数组名称为数组的首地址cout << "=====================" << endl;// 定义一个2维数组int movie_ratings [3][4] {{0, 4, 3, 5},{2, 3, 3, 5},{1, 4, 4, 5}};cout << "第1部电影的第1个评分为:" << movie_ratings[0][0] << endl;cout << "第2部电影的第4个评分为:" << movie_ratings[1][3] << endl;return 0;
}
3.2 容器(vector)
容器的提出:
• 假设需要存储整个学校所有学⽣的考试成绩
• ⽆法知道具体的学⽣数量
• 解决办法:
• 使⽤数组,数组⼤⼩设置的⾜够⼤
• 使⽤vector 动态数组
什么是容器(vector)?
• c++ 标准模板库STL中的容器(container)
• ⻓度⼤⼩可以随时缩放
• 和数组类似的语法⽤法
• ⾼性能
• 越界检查
• 很多有⽤的函数:sort, reverse, find等
A、容器(vector)的声明
B、容器(vector)的初始化
如下图最后一种初始化是长度为365的容器,初始值都为37.0,
C、容器的性质
• 动态调整⼤⼩
• 所有元素是同⼀类型
• 元素在内存中是连续存储的
• 可以使⽤存储的索引位置来获取元素
• 从0开始,最后⼀个元素索引为 size -1
• [ ]⽅式获取元素,提供了函数做越界检查
• 性能⾮常⾼
• 所有元素会初始化到0
D、获取容器元素
E、追加元素
F、越界检查
代码:
#include <iostream>
#include <vector>
using namespace std;int main()
{// vector<char> vowels; // 空的vector// vector<char> vowels(5); // 5个元素的vector,初始化为0vector <char> vowels {'a', 'e', 'i', 'o', 'u'}; // 5个元素的vector,初始化为元音字母cout << vowels[0] << endl; // 访问第1个元素cout << vowels[4] << endl; // 访问第5个元素// vector <int> student_scores (3); // 3个整数的vector,初始化为0,使用的是默认构造函数// cout << student_scores[0] << endl; // 访问第1个元素// vector <int> student_scores (3,100); // 3个整数的vector,初始化为100,使用的是带参数的构造函数// cout << student_scores[0] << endl; // 访问第1个元素vector <int> student_scores {100, 99, 98}; // 3个整数的vector,初始化为100,99,98,使用的花括号初始化cout << "array风格访问:" << endl;cout << "三个学生的成绩为:" << student_scores[0] << " " << student_scores[1] << " " << student_scores[2] << endl;cout << "====================" << endl;cout << "vector风格访问:" << endl;cout << "三个学生的成绩为:" << student_scores.at(0) << " " << student_scores.at(1) << " " << student_scores.at(2) << endl;cout << "vector大小为:" << student_scores.size() << endl;cout << "====================" << endl;cout << "修改vector中的元素:";cin >> student_scores.at(0);cin >> student_scores.at(1);cin >> student_scores.at(2);cout << "修改后的三个学生的成绩为:" << student_scores.at(0) << " " << student_scores.at(1) << " " << student_scores.at(2) << endl;cout << "====================" << endl;int new_add_score {0};cout << "添加新的成绩:";cin >> new_add_score;student_scores.push_back(new_add_score);cout << "再添加一个新的成绩:";cin >> new_add_score;student_scores.push_back(new_add_score);cout << "添加后一共有" << student_scores.size() << "个成绩,分别为:" << endl;cout << "第1个成绩为:" << student_scores.at(0) << endl;cout << "第2个成绩为:" << student_scores.at(1) << endl;cout << "第3个成绩为:" << student_scores.at(2) << endl;cout << "第4个成绩为:" << student_scores.at(3) << endl;cout << "第5个成绩为:" << student_scores.at(4) << endl;// cout << "故意访问不存在的元素:" << endl;// cout << "第6个成绩为:" << student_scores.at(5) << endl; // 故意访问不存在的元素,会报错cout << "====================" << endl;// 定义二维vectorvector <vector<int>> vector_2d{{1,2,3},{4,5,6},{7,8,9}};cout << "array风格打印二维vector第一行:" << endl;cout << vector_2d[0][0] << " " << vector_2d[0][1] << " " << vector_2d[0][2] << endl;cout << "vector风格打印二维vector第二行:" << endl;cout << vector_2d.at(1).at(0) << " " << vector_2d.at(1).at(1) << " " << vector_2d.at(1).at(2) << endl;
}
4、C++ 程序流程
关于C++程序流程,可参考我写的另外一个博客:CSDN全息数据博客
• 顺序执⾏(Sequence)
• 指令按先后顺序执⾏
• 条件分⽀(Selection)
• 做决定
• 循环(Iteration)
• 重复执⾏某任务
4.1 if else
语法格式:
if(条件)
{条件满足执行的语句}
else
{条件不满足执行的语句}
代码1:
#include <iostream>
using namespace std;int main(){int input_num {0};const int lower_limit {10};const int upper_limit {100};cout << "请输入一个介于" << lower_limit << "和" << upper_limit << "之间的整数:";cin >> input_num;if(input_num >= lower_limit){cout << "===========条件1============" << endl;cout << input_num << "大于等于" << lower_limit << endl;cout << input_num << "比" << lower_limit << "大" << (input_num - lower_limit) << endl;}if(input_num <= upper_limit){cout << "===========条件2============" << endl;cout << input_num << "小于等于" << upper_limit << endl;cout << input_num << "比" << upper_limit << "小" << (upper_limit - input_num) << endl;}if(input_num >= lower_limit && input_num <= upper_limit){cout << "===========条件3============" << endl;cout << input_num << "介于" << lower_limit << "和" << upper_limit << "之间" << endl;cout << "条件1、2都成立" << endl;}if(input_num == lower_limit || input_num == upper_limit){cout << "===========条件4============" << endl;cout << input_num << "在边界点上" << endl;cout << "条件1、2、3都成立" << endl;}return 0;
}
代码2:
#include <iostream>
using namespace std;int main()
{int input_num {0};const int target_num {50};cout << "请输入一个整数,我将与" << target_num << "比较:";cin >> input_num;if (input_num <= target_num){cout << "================条件1================" << endl;cout << input_num << "小于等于" << target_num << endl;cout << input_num << "比" << target_num << "小" << (target_num - input_num) << endl;}else{cout << "================条件2================" << endl;cout << input_num << "大于" << target_num << endl;cout << input_num << "比" << target_num << "大" << (input_num - target_num) << endl;}return 0;
}
4.2 switch
作用:执行多条件分支语句
switch和if语句的区别:
1、switch判断的条件只能是整型或字符型,不能是一个区间;
2、结构清晰,执行效率高;
注意:
case里面如果没有break,程序会一直向下执行;
代码1:
#include <iostream>
using namespace std;int main()
{char letter_grade {};cout << "请输入你的成绩:";cin >> letter_grade;switch (letter_grade){case 'a':case 'A':cout << "优秀" << endl;break;case 'b':case 'B':cout << "良好" << endl;break;case 'c':case 'C':cout << "中等" << endl;break;case 'd':case 'D':cout << "及格" << endl;break;default:cout << "输入错误" << endl;}return 0;
}
代码2:
#include <iostream>
using namespace std;int main()
{enum Traffic_light {red, yellow, green}; // 枚举类型Traffic_light light_color {yellow};switch (light_color){case red:cout << "红灯" << endl;break;case yellow:cout << "黄灯" << endl;break;default: // 必须加上default,否则编译器会警告cout << "ok" << endl;}}
4.3 for循环
作用:满足循环条件,执行循环语句
语法:for(起始表达式;条件表达式;末尾循环体){循环语句;}
for循环的基本形式:
在起始表达式完成变量的声明和初始化;
遍历数组:
逗号的分割使用:
无参数,无限循环,
代码1:
#include <iostream>
#include <vector>using namespace std;int main()
{// 简单的for demo// for(int i {1}; i <= 10; ++i)// cout << i << endl;// 每次i增加2// for (int i {1}; i <= 10; i += 2)// cout << i << endl;// 从10递减到1// for (int i {10}; i >= 1; --i)// cout << i << endl;// 循环中添加if语句// for (int i {1}; i <= 10; ++i){// if (i % 2 == 0)// cout << i << "是偶数" << endl;// else// cout << i << "是奇数" << endl;// }// 2个参数for (int i {1}, j {5}; i <= 5; ++i, ++j)cout << i << " * "<< j << " = " << (i * j) << endl;// 遍历vectorvector <int> nums {1,2,3,4,5,6,7,8,9,10}; // 初始化vectorfor (unsigned i {0}; i < nums.size(); ++i) // 要使用unsigned,否则会报警,因为size()是long unsigned int,所以要统一好数据类型cout << nums[i] << endl;return 0;
}
基于范围的循环:
for—— auto类型: 代码注释的“耗时”是自己确认数据类型的时间
for—— 解析vector:
for—— 解析序列:
for—— 解析字符串:
代码2:
#include <iostream>
#include <vector>
#include <iomanip>using namespace std;int main()
{// int student_scores [] {100, 98, 90, 86, 84}; // 初始化数组// for (auto score: student_scores)// cout << score << endl;// // 计算平均温度// vector <double> temps {23.1,22.9,19.3,23.2}; // 初始化vector// double temp_average {};// double temp_total {};// for (auto temp: temps)// temp_total += temp;// if (temps.size() != 0)// temp_average = temp_total / temps.size();// // 设置精度// cout << fixed << setprecision(1);// cout << "平均温度:" << temp_average << endl;// // 初始化的列表// for (auto i: {1,2,3,4,5,6,7,8,9,10})// cout << i << endl;// return 0;// 遍历string 字符串for (auto c: "This is a test")cout << c;cout << endl;
}
4.4 while 循环
作用:满足循环条件,执行循环语句
语法:while(循环条件){循环语句}
解释:只要循环的条件为真就会执行循环语句
while——打印偶数:
while——遍历数组:
while——输⼊验证:
4.5 do-while
作用:满足循环条件,执行循环语句
语法:do{循环语句}while(循环条件)
与while的区别:
do…while会先执行循环语句,再判断循环条件,与while正好相反
代码:
#include <iostream>
using namespace std;int main()
{// 输入菜单char input_char {};do {cout << "\n 菜单:" << endl;cout << "1. 打印Hello World" << endl;cout << "2. 打印Hello C++" << endl;cout << "3. 打印Hello C" << endl;cout << "q或Q. 退出" << endl;cout << "请输入菜单选项:";cin >> input_char;cout << endl;switch (input_char){case '1':cout << "Hello World" << endl;break;case '2':cout << "Hello C++" << endl;break;case '3':cout << "Hello C" << endl;break;case 'q':case 'Q':cout << "退出" << endl;break;default:cout << "输入错误" << endl;break;}} while (input_char != 'q' && input_char != 'Q');return 0;
}
5、C++ 字符和字符串
5.1 C++借用C⻛格字符串
C++存储C风格字符串时,字符串使用的是双引号,每个字符串会多存储1个字符大小 \0 作结束符号;
cstring函数:
代码:
#include <iostream>
#include <cstring>using namespace std;int main()
{// 全部初始化为空char first_name [20] {};char last_name [20] {};char full_name [50] {};char temp [50] {};// // 用户输入// cout << "请输入您的姓:";// cin >> first_name;// cout << "请输入您的名:";// cin >> last_name;// cout << "----------------------------------------" << endl;// cout << "您的姓:" << first_name << ",一共有 " << strlen(first_name) << " 个字符" << endl;// cout << "您的名:" << last_name << ",一共有 " << strlen(last_name) << " 个字符" << endl;// // 拼接名字// strcpy(full_name, first_name); // 拷贝 first_name 到 full_name// strcat(full_name, " "); // 拼接空格// strcat(full_name, last_name); // 拼接 last_name// cout << "您的全名是:" << full_name << endl;// cout << "----------------------------------------" << endl;// cout << "请输入您的全名:";// cin >> full_name; // 有空格的话,只会读取到空格前的内容// cout << "您的全名是:" << full_name << endl;cout << "----------------------------------------" << endl;cout << "请输入您的全名:";cin.getline(full_name, 50); // 读取一行,包括空格cout << "您的全名是:" << full_name << endl;cout << "----------------------------------------" << endl;// 比较字符串strcpy(temp, full_name); // 拷贝 full_name 到 tempif (strcmp(temp, full_name) == 0) // 比较 temp 和 full_namecout << temp << " 和 " << full_name << " 是相同的" << endl;elsecout << temp << " 和 " << full_name << " 是不同的" << endl;cout << "----------------------------------------" << endl;// 将字符串转换为大写for(size_t i {0}; i < strlen(full_name); i++){if (isalpha(full_name[i])){ // 判断是否是字母full_name[i] = toupper(full_name[i]); // 转换为大写}else{full_name[i] = '*';}}cout << full_name << endl;return 0;
}
5.2 C++⻛格字符串
• Std::string 是STL中⼀个类
• 使⽤前必须要导⼊#include
• std namespace
• 内存中连续,动态⼤⼩
• 可转c-style字符串相互转化
• 提供越界检查,更安全
A、声明和初始化
B、赋值
C、加粗样式
D、获取字符,更新
E、遍历
代码:
#include <string>
#include <iostream>using namespace std;int main()
{// 声明和初始化// string s1; // 全部初始化为空// string s2 {"hello"}; // 初始化为 hello// string s3 {s2}; // 拷贝 s2// string s4 {s3, 0, 4}; // 拷贝 s3 的前 4 个字符// string s5 {"hello", 3}; // 拷贝 hello 的前 3 个字符// string s6 (5, 'x'); // 5 个 x// // 打印s1、s2、s3、s4、s5、s6// cout << "s1 is empty: " << s1 << endl;// cout << "s2 is: " << s2 << endl;// cout << "s3 is: " << s3 << endl;// cout << "s4 is: " << s4 << endl;// cout << "s5 is: " << s5 << endl;// cout << "s6 is: " << s6 << endl;// // 赋值// string s1;// s1 = "C++ hello world";// cout << "s1 is: " << s1 << endl;// string s2 {"course"};// cout << "s2 is: " << s2 << endl;// s2 = s1;// cout << "s2 is: " << s2 << endl;// // 拼接// string part1 {"C++"};// string part2 {"是一门强大的"};// string sentence;// sentence = part1 + " " + part2 + "语言";// cout << sentence << endl;// // sentence = "C++" + "是一门强大的语言"; // 错误,不能将2个c-style字符串字面量相加// // 获取字符,更新// string s1 {"Hello"};// // 获取元素// cout << s1[1] << endl; // e// cout << s1.at(2) << endl; // l// // 重新赋值// s1[1] = 'a'; // Hallo// s1.at(2) = 'X'; // HaXlo// cout << s1 << endl;// // 遍历// string s1 {"Hello"};// for(auto c: s1){ // 可以使用char或auto// cout << c << endl;// }// for(int c: s1){ // 打印出来的是ASCII码// cout << c << endl;// }return 0;
}