C++学习日志
在了解C语言的相关知识后,我想进一步的了解C++的相关知识,借助此次蓝桥杯课程机会,简单记录一下我认为有趣的知识点,重点揭示C++在用法上和C语言的不同之处。希望可以为我,同时也给各位读者的学习供一些帮助。
代码格式与语法基础
在C++中我们可以使用一种万能头文件,使用后可以包含很多标准库中的函数使用,帮我们省去不少代码的书写。
#include<bits/stdc++.h>
using namespace
输入输出方法
1.scanf 和 printf
这是C语言中常见的输入和输出方式(对应格式化输出)
在课程中提到了一种比较特别的用法
scanf("%[^\n]",str);
这行代码的作用是排除回车(\n)将字符存入str中
2.cin 和 cout
这是一种特殊的流式输入输出方式,属于面向对象的I/O机制。通过重载运算符>>和<<实现简洁的输入和输出操作。
这里给出一段代码实例:
int main(){
int a,b;
cin >> a >> b;
cout << a << ' ' << b << '\n';
return 0; }
这里可以自动判断变量类型。
cout << fixed << setprecision(3) << ...
这样可以实现对浮点类型保留3位小数的操作。
对于字符串这样的输入输出,遇到空格或回车就表示一次输入输出结束。如果我们想要输入输出一行,可以使用下面的代码:
getline(cin,s);
cout << s;
getline()函数会得到一行字符串的值,并在cout中输出出来。
这样的方式固然便捷,但是由于自动判断变量等因素影响,使这样的方式读写的效率很低,可能导致程序超时。这时我们可以使用取消同步流操作加速cin和cout的运行速度。
我们要在流操作前添加如下代码:
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
这样可以使流操作速度达到一般输入输出相当的程度。
函数
基本格式:
返回值类型 函数名(参数列表){
//函数体
return 返回值(可能为空)}
这里对于函数的基本用法不再赘述,简单介绍一下函数的重载。
C++允许同名函数有不同的参数列表,这被称为函数的重载。
实例展示:
int add(int a,int b);
int add(double a,double b);
事实上,上面声明了两个同名的函数,但遇到不同的参数类型时,会执行不同的函数。同面向对象的重载类似。
注意:
1.函数名命名要遵循见名知意的原则。
2.参数的传递方式分为:值传递和引用传递(地址实现)
这里不再赘述
string字符串处理
在C++中有特殊的字符串处理方式,相对于C语言更加的灵活。
1.string声明和初始化
1.std::string str; //声明并初始化了一个字符串(这种类型的字符串没有空字符作为结尾)
2.std::string str1 = str2; //使用另一个对象来初始化字符串
3.const char *charArray = " "; std::string str3(charArray); //使用字符数组初始化字符串
4.std::string str4(number,' ') //使用重复字符初始化字符串
当然,我们可以用getline()函数直接读取一行字符串。
在C++中,std::string类提供了一个成员函数c_str(),它会返回一个(指向空字符结尾的)C风格的字符串(coust char*)
例:
char buf[520];
string str(buf);
printf("str = %s\n",str.c_str()); //输出str
这里简单记录一下课程中展示的部分函数:
1.获取长度:length() str.length(); [返回int]
2.拼接字符串:+ 或 append(): r1 = str1 + str2; r2 = str1.append(str2);
3.字符串查找:find("string"); [返回位置,否则-1]
4.字符串替换:replace(字串初始位置,替换的长度,"用来替换的字符串");
5.提取字符串:substr(起始下标位置,提取长度);
6.字符串比较:compare() str1.compare(str2);(事实上直接用‘<’和‘>’,在C++中可以实现比较效果)
遍历string的方法:
1.循环下标法
2.auto枚举:
例:
for(auto i:s){cout << i;}
for(auto &i:s){cout << i;i = 'a';} //使用&(引用类型),对i的修改会直接改变原值
这里的auto会让编译器自动推导变量类型,非常使用。
那么本次的学习就到此结束了,下次我们会具体讲解课程中出现的代码。
爱心 爱心