抽象。使用cin和getline读取下面这种文本
To\n
to be or not to be is a question\n
c++首先会把这些文本输入缓冲区
假设代码是这样:
cin >> str;
getline(cin, line);
那么cin会首先读取To然后把To后面的换行符留在缓冲区
缓冲区就会变成这样:
\n
to be or not to be is a question\n
然后由于getline只读\n之前的内容,所以getline(cin, line)就只会读到第一个换行符结束
因此虽然期望是读到
str = "To"
line = "to be or not to be is a question"
实际上会读到
str = "To"
line = ""
真的很逆天乐
解决办法就是在getline(cin, line)前面再加一行getline(cin, dummy)之类的把缓冲区类的\n删掉
真无语
cout << " \n"[i == n - 1];
清除 /var/lib/snapd/ 下过期的软件包 https://askubuntu.com/questions/1371833/howto-free-up-space-properly-on-my-var-lib-snapd-filesystem-when-snapd-is-unava
碰到一些需要通过判断EOF判断程序结束的题目,调试的时候可以在终端输入ctrl+z并enter表示EOF
next_permutation(dict.begin(), dict.end())可以生成全排列
(a+b)%p=(a%p+b%p)%p
using ll = long long;比#define ll long long 好用
c++的string下的erase方法 str.erase(int index)是删除index之后的所有字符,不是str[index]的字符 str.erase(int index, int length)是删除index之后长度为length的字符
抽象。使用cin和getline读取下面这种文本 To\n to be or not to be is a question\n c++首先会把这些文本输入缓冲区 假设代码是这样: cin >> str; getline(cin, line); 那么cin会首先读取To然后把To后面的换行符留在缓冲区 缓冲区就会变成这样: \n to be or not to be is a question\n 然后由于getline只读\n之前的内容,所以getline(cin, line)就只会读到第一个换行符结束 因此虽然期望是读到 str = "To" line = "to be or not to be is a question" 实际上会读到 str = "To" line = "" 真的很逆天乐 解决办法就是在getline(cin, line)前面再加一行getline(cin, dummy)之类的把缓冲区类的\n删掉 真无语
【【教程向】PCB艺术画设计教程【免费】-哔哩哔哩】 https://b23.tv/2W7aAN1 www好好看 点了背光更是好看 神奈川冲浪里也好看 有空一定做
一个数异或它本身得到0。可以利用这个特性排除重复出现的数据