前言
在C++中,输入与输出是程序与用户进行交互的基本方式。C++提供了多种方式进行数据的输入与输出,其中最常用的是printf、scanf、cin和cout。此外,我们还会讨论如何取消cin和cout的同步流,以及了解各种转义字符的用法。
1.printf函数
printf是C语言标准库中用于格式化输出的函数,它在C++中依然可用。printf函数可以输出各种类型的数据,包括整数、浮点数、字符和字符串等。
int printf(const char* format, ...);
示例:
#include <cstdio>  
  
int main() {  
    int a = 10;  
    float b = 20.5;  
    printf("整数:%d,浮点数:%f\n", a, b);  
    return 0;  
}
输出
整数:10,浮点数:20.500000
| 格式化符号 | 描述 | 示例 | 
|---|---|---|
| %d | 整数(十进制) | printf("%d", 123);输出123 | 
| %c | 字符 | printf("%c", 'A');输出A | 
| %s | 字符串 | printf("%s", "Hello");输出Hello | 
| %f | 浮点数(十进制) | printf("%f", 3.14159);输出3.141590 | 
| %e | 浮点数(科学计数法) | printf("%e", 3.14159);输出3.141590e+00 | 
| %E | 浮点数(科学计数法,大写E) | printf("%E", 3.14159);输出3.141590E+00 | 
| %g | 浮点数(根据大小自动选择%f或%e) | printf("%g", 3.14159);输出3.14159 | 
| %G | 浮点数(根据大小自动选择%f或%E) | printf("%G", 3.14159);输出3.14159 | 
| %% | 输出百分号 % | printf("%%");输出% | 
| %o | 整数(八进制) | printf("%o", 10);输出12 | 
| %x | 整数(小写十六进制) | printf("%x", 255);输出ff | 
| %X | 整数(大写十六进制) | printf("%X", 255);输出FF | 
| %u | 整数(无符号十进制) | printf("%u", 4294967295U);输出4294967295 | 
| %lu | 长整数(无符号十进制) | printf("%lu", 4294967295UL);输出4294967295 | 
| %llu | 长长整数(无符号十进制) | printf("%llu", 18446744073709551615ULL);输出18446744073709551615 | 
2.scanf 函数
scanf函数用于从标准输入(通常是键盘)读取格式化的输入。与printf类似,scanf也使用格式化字符串来指定输入数据的类型和格式。
语法:
int scanf(const char* format, ...);
示例:
#include <cstdio>  
  
int main() {  
    int a;  
    float b;  
    printf("请输入一个整数和一个浮点数:\n");  
    scanf("%d %f", &a, &b);  
    printf("你输入的整数是:%d,浮点数是:%f\n", a, b);  
    return 0;  
}
用户输入:
15 30.75
输出:
你输入的整数是:15,浮点数是:30.750000
3.cin 和 cout
在C++中,cin和cout是iostream库中的两个对象,分别用于从标准输入读取数据和向标准输出写入数据。它们比scanf和printf更加面向对象,并且与C++的风格更加一致。
-  cin:用于从标准输入(键盘)读取数据。 
-  cout:用于向标准输出(屏幕)输出数据。 
示例:
#include <iostream>  
  
int main() {  
    int a;  
    float b;  
    std::cout << "请输入一个整数和一个浮点数:";  
    std::cin >> a >> b;  
    std::cout << "你输入的整数是:" << a << ",浮点数是:" << b << std::endl;  
    return 0;  
}
用户输入:
20 40.25
输出:
你输入的整数是:20,浮点数是:40.25
cin是默认以空格、回车作为间隔的,所以不会读到输入中的空格和回车,如果你想读取一整行的字符串,可以尝试getline()函数或者gets()函数。
4.取消同步流
默认情况下,cin和cout与scanf和printf是同步的,这意味着在读取和输出之间会有缓冲。有时为了提高效率,我们可能需要取消这种同步。
有些题目的输入输出较大(例如到了几百万),如果不取消同步流将导致输入输出很慢从而超时。
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
示例:
#include <iostream>  
  
int main() {  
	// 取消同步  
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);  
    int a;  
    float b;  
    std::cin >> a >> b;  
    std::cout << a << " " << b << std::endl;  
    return 0;  
}
5.转义字符
转义字符是一种特殊的字符序列,用于表示不可打印的字符或具有特殊含义的字符。以下是一些常用的转义字符:
| 转义字符 | 描述 | 
|---|---|
| \n | 换行 | 
| \t | 制表符(Tab) | 
| \b | 退格 | 
| \r | 回车 | 
| \ | 反斜杠 | 
| " | 双引号 | 
| ’ | 单引号 | 
示例:
#include <iostream>  
  
int main() {  
    std::cout << "Hello, \\t World!" << std::endl; // 输出 "Hello, \t World!",\t表示制表符  
    std::cout << "This is a test of \"double quotes\" and 'single quotes'." << std::endl;  
    return 0;  
}
以上就是关于C++中printf、scanf、cin、cout的用法,取消同步流以及转义字符的详细介绍。这些工具在C++编程中非常常用,掌握它们对于编写高效且易于维护的程序至关重要。










