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

ザ・ワールド!時よ止まれ!