算法备忘录·杂项

本文最后更新于 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

  • <iostream>
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() 输入输出的效率显著优于 cincout
  • 提高速度
1
2
3
4
5
6
7
8
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);

// 较老版本不支持 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>    //通用算法,max/min/swap/reverse
#include <bitset>     
#include <cstdio>
#include <cstdlib>
#include <cstring> //memset
#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);

// 或者用前文提到的 stringstream

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;

算法备忘录系列目录:
第一节 算法备忘录·基础算法
第二节 算法备忘录·数据结构
第三节 算法备忘录·杂项
第四节 算法备忘录·搜索与图论
第五节 算法备忘录·数学知识
第六节 算法备忘录·动态规划
第七节 算法备忘录·贪心
第八节 算法备忘录·时空复杂度分析
第九节 算法备忘录·杂项


算法备忘录·杂项
https://justloseit.top/算法备忘录·杂项/
作者
Mobilis In Mobili
发布于
2024年5月13日
更新于
2024年5月15日
许可协议