如何解决我在理解 std::cin.peek() 和 std::cin.get()
我对 std::cin.peek()
、std::cin.get()
的用法很困惑,我的意思是这些版本返回 int
。
正如我在 C++ 入门中所读到的,我们永远不应该将这些函数的返回值分配给 char
:
char c = std::cin.get(); // erroneous
但在 Cppreference 上,它在示例、许多网站和包括我在内的许多程序员中都这样做了,直到我发现不这样做的逻辑。
https://en.cppreference.com/w/cpp/io/basic_istream/get
我也看到了这样的使用检查换行:
while(std::cin.peek() != '\n' )
;// do something
在上面的代码中我认为是可以的,因为实际上没有从 int
到 char
的赋值,而是一个比较,其中换行符 '\n'
首先被提升到 {{ 1}} 然后与 int
相比,我认为这不是邪恶的。
我看过一些推荐的代码,例如:
char
- 那么
char c; while(std::cin.peek() != std::char_traits<char>::to_int_type('\n')){ std::cin.get(c); std::cout.put(c); }
到'\n'
的隐式转换和使用这个 trait 函数有什么区别?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。