如何将 cin 传递给函数
How to pass cin to a function?
我正在学习C++中不同的流状态标志/函数,例如good((,goodbit,bad((,badbit等。在使用 std::cin 进行测试时,我无法将 cin 作为参数传递给函数(编译器显示很多错误(
#include <iostream>
#include <sstream>
void print_state (const std::istream& stream) {
std::cout << " good()=" << stream.good();
std::cout << " eof()=" << stream.eof();
std::cout << " fail()=" << stream.fail();
std::cout << " bad()=" << stream.bad();
}
int main() {
std::cin.clear (std::ios::goodbit);
std::cout << "goodbit: " << print_state(std::cin) << std::endl;
std::cin.clear (std::ios::eofbit);
std::cout << "eofbit: " << print_state(std::cin) << std::endl;
std::cin.clear (std::ios::failbit);
std::cout << "failbit: " << print_state(std::cin) << std::endl;
std::cin.clear (std::ios::badbit);
std::cout << "badbit: " << print_state(std::cin) << std::endl;
return 0;
}
期望输出:
goodbit: good()=1 eof()=0 fail()=0 bad()=0
eofbit: good()=0 eof()=1 fail()=0 bad()=0
failbit: good()=0 eof()=0 fail()=1 bad()=0
badbit: good()=0 eof()=0 fail()=1 bad()=1
我知道我可以直接使用 cin 调用函数,例如 std::cin.good()
,但我想知道如何将 cin 作为参数传递给函数。
编辑:我在编译过程中遇到很多错误。举个例子:
F:cpp_programmingstream_states.cpp: In function 'int main()':
F:cpp_programmingstream_states.cpp:13:27: error: no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'void')
std::cout << "goodbit: " << print_state(std::cin) << std::endl;
~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
由于 print_state
不返回值,因此不能与插入运算符 <<
一起使用。纠正此问题的最简单方法是自行调用print_state
。
print_state(std::cin);
更正后的代码如下:
#include <iostream>
#include <sstream>
void print_state (const std::istream& stream) {
std::cout << " good()=" << stream.good();
std::cout << " eof()=" << stream.eof();
std::cout << " fail()=" << stream.fail();
std::cout << " bad()=" << stream.bad();
}
int main() {
std::cin.clear (std::ios::goodbit);
std::cout << "goodbit: "; print_state(std::cin); std::cout << std::endl;
std::cin.clear (std::ios::eofbit);
std::cout << "eofbit: "; print_state(std::cin); std::cout << std::endl;
std::cin.clear (std::ios::failbit);
std::cout << "failbit: "; print_state(std::cin); std::cout<< std::endl;
std::cin.clear (std::ios::badbit);
std::cout << "badbit: "; print_state(std::cin); std::cout << std::endl;
return 0;
}
回答我自己的问题
cin
可以作为函数参数传递给函数,例如:
functionName(std::cin);
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- C++输入流.与 cin unget() 函数有点混淆
- 如何在C++中将 cin 设置为类的成员函数?
- 如何将 std::cin 作为函数的参数传递?
- cin.get()函数在C 中
- 如何使用std::cin函数后修复从文件读取的问题
- Cin和Cout在构造函数中
- 如何将 cin 传递给函数
- 与 CIN 一起使用的 getline() 函数
- CIN.IGNORE删除第一个字符的第二次函数被调用
- 将GoogleTest与通过STD :: CIN从用户输入的函数一起使用
- "cin.get"停止了另一个输入函数,如"cin"..C++
- 运行时对cin函数的混淆
- C++ 在类的成员函数中使用 cin
- 有没有办法将C++中的'std::cin'变成'scan()'函数?
- cin函数是否添加了在输入结束时终止的null
- cin.getline()函数在CIN之后无法正常工作
- 使用 cin 将输入作为函数参数传递
- 使用函数在cin和ifstream之间切换
- 函数cin.clear()在C++详细的描述中做了什么