本文最后更新于 2024年5月15日 凌晨
做 Leetcode 模式太多,切换到 ACM 模式,一时间竟忘记了输入输出以及头文件的写法。罪过罪过。
杂项
输入输出
输入
cin
<iostream>
- 以空格、tab、换行符作为分隔符
- 从第一个非空格字符开始读取,直到遇到分隔符结束读取
getline()
string
- 读取一行
- 读取的字符串包括空格,遇到换行符结束
1 2
| string s; getline(cin, s);
|
getchar()
1 2
| char ch; ch = getchar();
|
scanf()
<stdio.h>
- 缓冲区不会自动清空,需要
getchar()
来处理换行符,以防止输入的数据被下一个输入函数接收
- 因为 string 并非是 C 的原生类型,所以不建议使用 scanf 输入 string 类型字符串
输出
cout
stringstream
<sstream>
- 能够灵活的处理字符串,具有和输入输出流相似的接口和方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| stringstream s; string name = "A"; int age = 13; double height = 1.2; string status = "is a dog";
s << "Name: " << name << ", Age: " << age << ", Height: " << height << ", Status: " << status; string str = s.str();
string str = "7"; stringstream ss; ss << str; int num; ss >> num;
|
printf()
<stdio.h>
- 输出 string 对象中的字符串,可以使用 string 的成员函数 c_str()
1 2
| string a = "test"; printf("%s",a.c_str());
|
关闭标准流同步
- 由于同步流机制和类型检查机制,
scanf()
和 printf()
输入输出的效率显著优于 cin
和 cout
- 提高速度
1 2 3 4 5 6 7 8
| ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
|
头文件
万能头文件
1
| #include <bits/stdc++.h>
|
常用头文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <algorithm> #include <bitset> #include <cstdio> #include <cstdlib> #include <cstring> #include <deque> #include <map> #include <iostream> #include <queue> #include <set> #include <sstream> #include <stack> #include <string> #include <vector>
|
字符串
string <—> number
string —> number
1 2
| int a = 1234567; string str = to_string(a);
|
number —> stringS
1 2 3 4
| string str = '1234567'; int a = stoi(str);
|
string <—> char*
string —> char*
1 2
| string str= "test"; const char *p = str.c_str();
|
char* —> string
1 2 3
| char a[10] = "hello"; char *b = a; string c = b;
|
算法备忘录系列目录:
第一节 算法备忘录·基础算法
第二节 算法备忘录·数据结构
第三节 算法备忘录·杂项
第四节 算法备忘录·搜索与图论
第五节 算法备忘录·数学知识
第六节 算法备忘录·动态规划
第七节 算法备忘录·贪心
第八节 算法备忘录·时空复杂度分析
第九节 算法备忘录·杂项