C 的字符串读取
scanf
以空行为分割进行读取数据。
get
和 fgets
以\n
为分割读取数据。读取输入直到遇到\n
或\0
才终止。
C++ 读取字符串
cin 以空格为分割读取数据。getline 默认以换行符为分割读取数据。在使用 getline 时,要注意处理 多个\n
连到一块的情况。当读取77\n\n77
时,第二次会读到空行,可使用while(getchar()!='\n');
消除多余的换行符。
另外getline
的第三个参数可以指定分割符,可根据需要使用。C++11 中 getline 的一个声明:istream& getline (istream& is, string& str, char delim);
IO 同步问题
C++ iostream默认是和stdio同步的,这使得iostream的性能下降。在竞赛题目的数据量大时于就会超时。可以通过关闭io同步解决这个问题,当然也可以使用 C 语言的 stdio,完全看个人喜好(建议只用一种)。
// 关闭 C++ io 同步
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
字符串处理常用
s.c_str()
转换为 c 风格字符串(char *s)。
s.substr(pos, len)
返回 pos 位置开始,长度为len的子串,如果字符数不够到结束为止。
s.find("string")
返回子字符串的下标,返回类型为usinged
Hello World! 输出
#include <bits/stdc++.h>
int main()
{
puts("Hello World!");
printf("Hello World!\n");
std::cout << "Hello World!" << std::endl;
}
运行结果:
Hello World!
Hello World!
Hello World!