刚开始学习C++,第一个程序应该都是
#include using namespace std;
int main() { cout << "Hello" << endl; return 0; }
这样的吧。
接下来我一行一行的解析一下
#include :是一个预处理,不使用iostream的话,将无法使用cin、cout、endl。
using namespace std:是引入标准空间命名,没有std,使用cin需要写成std::cin。 一般小项目推荐使用using namespace std,但是在大项目中,建议写成using std::cin。
main方法:是整个程序的入口,在运行时,首先找到main,然后运行完整个main就结束。
cout:全称为character output,配合<<来将信息输出到屏幕上。
cin:全称为character input,配合>>来读取用户键入的数据。 扩展cin:当用户键入数据时,这些数据会先存放在缓冲区,缓冲区是在内存中开辟出的一个空间,假如:
读取一个值 用户输入前: 缓冲区为空: [ ] 用户输入: 123[回车] → 缓冲区: ['1','2','3','\n'] cin >> number 读取后: 缓冲区: ['\n'] ← 注意:换行符还在!
读取多个值 输入前: [ ] 用户输入: 10 20[回车] → 缓冲区: ['1','0',' ','2','0','\n'] cin >> a 读取后: 缓冲区: [' ','2','0','\n'] ← 空格还在! cin >> b 读取后: 缓冲区: ['\n'] ← 换行符还在! 在这里,cin读取前会跳过第一个空字符。
读取int类型 #include using namespace std;
int main() { int num; cout << "请输入数字: "; // 用户输入: 123abc[回车] cin >> num;
// num = 123
// 缓冲区剩余: ['a','b','c','\n']
return 0;
}
读取string类型 #include using namespace std;
int main() { string str; cout << "请输入字符串: "; // 用户输入: hello world[回车] cin >> str;
// str = "hello" (遇到空格停止)
// 缓冲区剩余: [' ','w','o','r','l','d','\n']
return 0;
}
那么如何清理缓冲区的数据呢? 使用cin.ignore(1000,'\n')或者cin.ignore()来清除,前者会清理1000个字符或者直到清理到第一个换行符为止,后者则是清理一个字符。 使用getline(cin,str):读取一行数据给str变量,会读取换行符,但是不会存放在变量中。