C/C++ Notes
Updated on Jan 05, 2019
1 Syntax
1.1 预编译注释语句
#if 0
cout << "Hi there." << endl;
cin.get();
#endif
1.2 查看数据类型
cout << typeid(2018).name() << endl;
1.3 Use Template
使用 typename 可以接触对C++对函数参数及返回值数据类型的严格限制,在实例化后才确定数据类型。
#include <iostream>
using namespace std;
template <typename T>
T get_max(T a, T b)
{
return a>b ? a : b;
}
int main()
{
int a = 1;
int b = 2;
double c = 3.14;
double d = 9.9;
cout << get_max(a, b) << endl;
cout << get_max(c, d) << endl;
cin.get();
return 0;
}
1.4 键排序
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp_descending(pair<int, double> a, pair<int, double> b)
{
return a.second > b.second;
}
bool cmp_ascending(pair<int, double> a, pair<int, double> b)
{
return a.second < b.second;
}
int main()
{
vector<pair<int, double>> ratio;
ratio = { { 1, 3.14 }, { 2, 0.618 } };
sort(ratio.begin(), ratio.end(), cmp_ascending);
cout << ratio[0].first << endl;
sort(ratio.begin(), ratio.end(), cmp_descending);
cout << ratio[0].first << endl;
cin.get();
return 0;
}
1.5 iterate over array
c++也有类似于Python中遍历list元素的方式:
int arr[] = { 1, 9, 9, 4 };
for (int e : arr)
{
cout << e << "\t";
}
2 IO
2.1 读写文本文件
#include <fstream>
#include <iostream>
int main()
{
std::fstream fp;
fp.open("./1.txt", std::ios::out);
fp << 3.14;
fp.close();
double pi;
fp.open("./1.txt", std::ios::in);
fp >> pi;
std::cout << pi << std::endl;
fp.close();
std::cin.get();
return 0;
}
2.1 读写二进制文件
// tbc
3 字符串操作
3.1 整型转字符串 int to string
#include <iostream>
#include <string>
int main()
{
int i = 1984;
std::string s = std::to_string(i);
cout << s << endl;
cin.get();
return 0;
}
3.2 单引号 & 双引号
C++中,单引号中只能是单个字符;
而双引号中是字符串,并且会在末尾追加’\0’,例如”7” = ‘7’ + ‘\0’。
可以查看其存储空间占用字节数,下段代码的结果是:1,2,4。
cout << sizeof('7') << endl;
cout << sizeof("7") << endl;
cout << sizeof(7) << endl;
3.3 字符串拼接
std::string s = "Kira Yoshikage";
s = "I'm " + s + ".";
3.4 字符复制多个
std::string s7 = std::string(10, '*');
4 VS
4.1 快捷键
多行注释: Ctrl - K & Ctrl - C
取消多行注释: Ctrl - K + Ctrl - U
4.2 error solution
error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead.
选择 Project - Properties - C/C++ - Preprocessor
Preprocessor Definitions 中添加 _CRT_SECURE_NO_WARNINGS;
4.3 etc.
输出重定向
std::cerr<< 1 <<endl;
选择 Project - Properties - Debugging
Command Arguments 中添加 >nul
5 TBC
ザ・ワールド!時よ止まれ!