输入输出
输入输出
数据的输入
作用:用于从键盘获取数据
**关键字:**cin
语法: cin >> 变量
示例:
int main(){
//整型输入
int a = 0;
cout << "请输入整型变量:" << endl;
cin >> a;
cout << a << endl;
//浮点型输入
double d = 0;
cout << "请输入浮点型变量:" << endl;
cin >> d;
cout << d << endl;
//字符型输入
char ch = 0;
cout << "请输入字符型变量:" << endl;
cin >> ch;
cout << ch << endl;
//字符串型输入
string str;
cout << "请输入字符串型变量:" << endl;
cin >> str;
cout << str << endl;
//布尔类型输入
bool flag = true;
cout << "请输入布尔型变量:" << endl;
cin >> flag;
cout << flag << endl;
return EXIT_SUCCESS;
}
运行/观察结果: 运行时需要按提示输入数据,输出结果会随输入内容和分支条件变化。
C 风格 I/O 与 C++ 流式 I/O
1.C语言的stdio.h中的scanf和printf
int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
int printf(const char *format, ...) 函数把输出写入到标准输出流 **stdout ,并根据提供的格式产生输出。
printf("输出内容(可含占位符)",变量1,变量2)
printf("%d",a); //输出一个整形变量a
printf("%f %f",a,b); //输出二个单精度浮点数变量(fp32) a,b中间以空格隔开
printf("%d序号对应的值是%lf",a,b); //输出二个单精度浮点数变量a,b中间以空格隔开
printf("%.2f",a); //输出一个单精度浮点数(fp32) a,并保留两位小数
printf("你好") //输出“你好”字符串
运行/观察结果: 运行后会按输出语句打印对应内容,变量值可结合初始化、赋值和函数调用顺序推导。
scanf("%d",&a); //输入一个整形数
scanf("%d %d",&a,&b); //输入两个整形数,中间以空格隔开
scanf("%d,%d",&a,&b); //输入两个整形数,中间以逗号隔开
运行/观察结果: 运行时需要按提示输入数据,输出结果会随输入内容和分支条件变化。
2.C++的iostream中的std::cin和std::cout
cout 是与流插入运算符 << 结合使用
std::cout << a; //输出一个变量a
std::cout << "你好" //输出"你好"
std::cout << "结果是:" << a << std::endl //输出 结果是: a 并换行
运行/观察结果: 运行后会按输出语句打印对应内容,变量值可结合初始化、赋值和函数调用顺序推导。
cin 是与流提取运算符 >> 结合使用
std::cin >> a //输入一个变量a
运行/观察结果: 运行时需要按提示输入数据,输出结果会随输入内容和分支条件变化。
现代 C++ 的格式化输出
前面介绍的 printf 和 std::cout 都很常用,但各有缺点:printf 的格式占位符写错时不够类型安全,std::cout 连续输出多个变量时又比较啰嗦。
现代 C++ 提供了更适合格式化输出的工具:
std::format(C++20):生成格式化后的std::string,写法简洁,类型安全。std::print/std::println(C++23):直接格式化输出,println会自动换行。
例如输出一个名字和分数,std::cout 常写成 std::cout << name << ": " << score << std::endl;,现代写法可以写成 std::println("{}: {}", name, score);。
std::print / std::println 默认输出到标准输出,也可以把第一个参数写成 stdout 或 stderr。这里的 stdout / stderr 是 C 标准库的 FILE*,不是 std::cout。
后面现代 C++ 章节会专门讲:std::format / std::print。
