C++ 输入输出方式小结
在 C++ 编程中,输入和输出是基本操作。本文将输入和输出分开,详细说明常见的输入输出方式,包括它们的功能、支持的内容类型、具体用法和返回值含义。
ACM竞赛之输入输出(以C与C++为例) - Aloys_Code - 博客园 (cnblogs.com)
一、输入方式
1. cin >>
功能:
- 用于从标准输入(通常是键盘)读取数据。
- 会自动跳过空格、回车和 Tab 等不可见字符。
- 适合读取整数、浮点数、字符和字符串。
支持的内容:
- 整数(
int
、long
等) - 浮点数(
float
、double
) - 单个字符(
char
) - 字符串(
string
)
用法:
int a;
cin >> a; // 读取整数
返回值:
cin >>
返回istream&
,可用于判断输入是否成功。
if (cin >> a) {
// 输入成功
} else {
// 输入失败,例如输入了非法字符
}
2. cin.get()
功能:
- 读取单个字符,不跳过空格、回车和 Tab 等特殊字符。
- 适合处理逐字符输入。
支持的内容:
- 单个字符(
char
)
用法:
char c;
cin.get(c); // 读取单个字符,包括空格和换行
- 读取指定数量的字符到字符数组:
char str[10];
cin.get(str, 10); // 读取最多9个字符,最后一个字符是 '\0'
返回值:
- 返回
istream&
,可以用于检查输入是否成功。
if (cin.get(c)) {
// 成功读取字符
} else {
// 读取失败
}
3. cin.getline()
功能:
- 读取一行字符到字符数组中,包括空格,直到遇到换行符或达到最大字符数。
支持的内容:
- 字符串(字符数组
char[]
)
用法:
char str[50];
cin.getline(str, 50); // 读取一行最多 49 个字符,最后一个字符是 '\0'
返回值:
- 返回
istream&
,用于判断输入是否成功。
4. getline()
功能:
- 读取整行输入,支持
string
类型,并包括空格和换行。
支持的内容:
- 字符串(
string
)
用法:
string str;
getline(cin, str); // 读取一整行,存入 string 变量
返回值:
- 返回
istream&
,可以用于判断输入是否成功。
5. scanf()
功能:
- 来自 C 语言的函数,按指定的格式从标准输入读取数据。
- 不跳过换行符,但会跳过空格和 Tab。
支持的内容:
- 整数(
int
、long
等) - 浮点数(
float
、double
) - 单个字符(
char
) - 字符串(
char[]
)
用法:
int a;
scanf("%d", &a); // 读取整数并存入变量 a
- 格式化符号说明:
%d
:读取int
整数%ld
:读取long
整数%f
:读取float
浮点数%lf
:读取double
浮点数%c
:读取单个字符%s
:读取字符串
返回值:
- 返回成功读取的输入项数量,如果输入匹配失败,返回值会小于预期的数量。
int a, b;
int result = scanf("%d %d", &a, &b);
if (result == 2) {
// 成功读取两个整数
} else {
// 输入失败或不足两个整数
}
6. getchar()
功能:
- 逐字符从输入缓冲区读取单个字符。
- 输入结束符为回车。
支持的内容:
- 单个字符(
char
)
用法:
char c;
c = getchar(); // 读取一个字符
返回值:
- 返回读取的字符,遇到 EOF(End Of File)时返回
-1
。
while ((c = getchar()) != EOF) {
// 逐个字符处理
}
二、输出方式
1. cout
功能:
- 标准的 C++ 输出流,输出内容到控制台。
支持的内容:
- 整数、浮点数、字符、字符串等。
用法:
int a = 10;
cout << "The value of a is " << a << endl;
返回值:
cout
返回ostream&
,可以用于链式输出操作。
2. printf()
功能:
- 来自 C 语言的标准输出函数,用于格式化输出。
支持的内容:
- 整数、浮点数、字符、字符串等。
用法:
int a = 10;
printf("The value of a is %d\n", a);
- 格式化符号说明:
%d
:输出int
整数%ld
:输出long
整数%f
:输出float
浮点数%lf
:输出double
浮点数%c
:输出单个字符%s
:输出字符串
返回值:
printf()
返回成功输出的字符数量。
int result = printf("Hello, world!\n");
if (result >= 0) {
// 输出成功,result 是输出的字符数量
}
3. putchar()
功能:
- 向标准输出写入单个字符。
支持的内容:
- 单个字符(
char
)
用法:
putchar('A'); // 输出字符 'A'
返回值:
- 返回输出的字符,失败时返回
EOF
。
int result = putchar('A');
if (result != EOF) {
// 输出成功
}
总结
输入方式总结
输入方式 | 支持的内容 | 用法示例 | 返回值 |
---|---|---|---|
cin >> | 整数、浮点数、字符、字符串 | cin >> a; | istream& ,判断输入成功 |
cin.get() | 单个字符、字符数组 | cin.get(c); | istream& ,判断输入成功 |
cin.getline() | 字符数组(带 ‘\0’ 结尾) | cin.getline(str, 20); | istream& ,判断输入成功 |
getline() | string 字符串 | getline(cin, str); | istream& ,判断输入成功 |
scanf() | 格式化读取整数、浮点数、字符、字符串 | scanf("%d", &a); | 读取的输入项数量 |
getchar() | 单个字符 | char c = getchar(); | 读取的字符,EOF 返回 -1 |
输出方式总结
输出方式 | 支持的内容 | 用法示例 | 返回值 |
---|---|---|---|
cout | 整数、浮点数、字符、字符串 | cout << a; | ostream& ,链式输出 |
printf() | 格式化输出整数、浮点数、字符、字符串 | printf("%d", a); | 输出的字符数量 |
putchar() | 单个字符 | putchar('A'); | 输出的字符,失败返回 EOF |