iostream 相关问题

C ++ iostream库是一个面向对象的库,它使用流提供输入和输出功能。 iostreams类支持内置类型的类型安全I / O,并且可以通过重载>>和<<运算符来扩展以支持用户定义的类型。

C++中有二进制内存流吗

我通常使用stringstream写入内存字符串。有没有办法以二进制模式写入字符缓冲区?考虑以下代码: 字符串流; << 1 << 2 << 3;...

回答 7 投票 0

为什么 gcc 13.1 在包含 <iostream> 时不生成任何代码?

假设我有一个非常简单的程序,如下所示: #包括 int main() { 返回12; } 当用 gcc 编译这个程序时(从 gcc-4.x 到 gcc-12.x),生成的代码是

回答 1 投票 0

在c++中打印变量名称的通用方法

上过课 结构体{ 整数a1; 布尔a2; ... 字符* a500; ... 字符a10000; } 我想打印或流式传输 “a1 值为 SOME_VALUE” “a2 值为 SOME_VALUE” “a500 值为

回答 6 投票 0

`std::fstream` 和 `std::stringstream` 在读写使用中是否有不同的行为?

我尝试了以下方法来“就地”覆盖流: #包括 #包括 #包括 #包括 void e(std::iostream &s) {...

回答 1 投票 0

如何在C++中从cin读取直到EOF

我正在编写一个直接从用户输入读取数据的程序,并且想知道如何(没有循环)从标准输入读取所有数据直到 EOF。我正在考虑使用 cin.get( input, ' ...

回答 11 投票 0

不能包含<IOStream>,否则会崩溃

我正在将 Eclipse 与 C++ 和 opengl 一起使用。但是,在我的程序中,我无法使用#include,否则出现以下错误:启动配置中指定的程序文件不存在 C:\Users\works...

回答 0 投票 0

无法打开源文件“iostream”,如何解决?

我最近一直在尝试使用 Ubuntu 和 WSL2 来运行 SPRNG(可扩展并行随机数生成器库)。 然而,当我用 VScode 开源 sprng.cpp 之类的源代码时,我得到了波浪......

回答 1 投票 0

如何正确超载<< operator for an ostream? [duplicate]

我正在用 C++ 编写一个用于矩阵运算的小型矩阵库。然而,我的编译器抱怨了,而以前却没有。该代码被搁置了六个月,在这期间我升级了我的

回答 6 投票 0

使用 boost::iostreams::tee_device?

有人可以帮助我吗? 我正在尝试做类似以下的事情: #包括 #包括 #包括 #包括 有人可以帮助我吗? 我正在尝试做以下事情: #include <boost/iostreams/tee.hpp> #include <boost/iostreams/stream.hpp> #include <sstream> #include <cassert> namespace io = boost::iostreams; typedef io::stream<io::tee_device<std::stringstream, std::stringstream> > Tee; std::stringstream ss1, ss2; Tee my_split(ss1, ss2); // redirects to both streams my_split << "Testing"; assert(ss1.str() == "Testing" && ss1.str() == ss2.str()); 但是在VC9中无法编译: c:\lib\boost_current_version\boost\iostreams\stream.hpp(131) : error C2665: 'boost::iostreams::tee_device<Sink1,Sink2>::tee_device' : none of the 2 overloads could convert all the argument types 有人让它工作吗?我知道我可以创建自己的课程来做到这一点,但我想知道我做错了什么。 谢谢 您使用 io::stream 的 构造函数转发版本,它本身构造一个 tee-stream 并将所有参数转发给它。在将参数转发给函数时,C++03 的功能有限(所需的重载量很容易呈指数增长)。它 (io::stream) 做出以下限制: 每个成员都会构造一个流实例,并将其与根据给定参数列表构造的设备 T 实例相关联。 涉及的 T 构造函数必须按值或 const 引用获取所有参数。 嗯,但是 tee_device 构造函数说 根据给定的一对接收器构造 tee_device 的实例。如果相应的模板参数是流或流缓冲区类型,则每个函数参数都是非常量引用,否则为常量引用。 当然,这是行不通的。 io::stream 提供了另一个将 T 作为第一个参数的构造函数。这在这里有效(至少可以编译。不过,断言失败了。我没有使用过boost::iostreams,所以我无能为力) namespace io = boost::iostreams; typedef io::tee_device<std::stringstream, std::stringstream> TeeDevice; typedef io::stream< TeeDevice > TeeStream; std::stringstream ss1, ss2; TeeDevice my_tee(ss1, ss2); TeeStream my_split(my_tee); my_split << "Testing"; assert(ss1.str() == "Testing" && ss1.str() == ss2.str()); 编辑:调用 flush() 或流式传输 << std::flush 后,断言通过。 可能你需要这样设置: typedef io::tee_device<std::stringstream, std::stringstream> Tee; typedef io::stream<Tee> TeeStream; std::stringstream ss1, ss2; Tee my_tee(ss1, ss2); TeeStream my_split(my_tee); 使用 std::ref 传递不可复制的接收器。 Tee my_split(std::ref(ss1), std::ref(ss2));

回答 3 投票 0

将 cin 重定向到字符串

我想让 cin 从字符串读取输入。 有没有办法做到这一点? 像这样的东西: const char * s = "123 ab"; cin.readFrom(s); // <---- I want something like this int i; cin...

回答 5 投票 0

为什么 std::getline() 在格式化提取后会跳过输入?

我有以下一段代码,提示用户输入猫的年龄和名字: #包括 #包括 int main() { 年龄; std::字符串名称; std::c...

回答 5 投票 0

如何让我的十六进制字符串在 C++ 中包含中间零?

我正在尝试将存储为字节向量的 UUID 输出为带破折号的十六进制字符串。当任何单个字节有前导零时,我的输出字符串会跳过它。我正在使用 std::setw(2) 并且仍然很...

回答 1 投票 0

用C++创建一颗星星

我正在尝试在代码块 IDE 中加星。为了创建星号,我尝试合并“\”反斜杠,但是当我构建并运行程序时,反斜杠被省略。 #包括...

回答 1 投票 0

为什么没有<< overload for printing std::byte?

以下代码无法在 C++20 中编译 #包括 #包括 int main(){ std::byte b {65}; std::cout<<"byte: "< 以下代码无法在 C++20 中编译 #include <iostream> #include <cstddef> int main(){ std::byte b {65}; std::cout<<"byte: "<<b<<'\n';// Missing overload } 当C++17中添加std::byte时,为什么没有相应的operator<<重载来打印它?我也许可以理解不打印容器的选择,但为什么不呢std::byte?它尝试充当原始类型,我们甚至对 std::string、最近的 std::string_view 和 也许是最相关的 std::complex、 和 std::bitset 本身进行了重载。 还有 std::hex 和类似的修饰符,因此默认打印 0-255 应该不是问题。 这只是疏忽吗? operator>>呢,std::bitset都有,而且一点也不小。 编辑:发现甚至可以打印std::bitset。 来自std::byte(P0298R3)的论文:(强调我的) 设计决策 std::byte 不是整数也不是字符 这里的关键动机是使字节成为一种独特的类型——通过利用类型系统来提高程序安全性。这就导致了std::byte的设计不是整数类型,也不是字符类型。它是一个独特的 用于访问最终构成对象存储的位的类型。 (强调我的) 因此,不需要隐式转换/解释为 char 或任何整数类型,因此不能使用 std::cout 打印,除非显式转换为所需类型。 此外,请参阅如何在需要旧式 unsigned char 的地方使用新的 std::byte 类型?. std::byte 用于访问原始数据。为了让我能够用实际上说“这是原始且未解析的”的东西来替换遍布代码库的该死的uint8_t,而不是可能被误解为 C 字符串的东西。 强调:std::byte并不“试图成为一个原始人”,它代表了一些甚至更少的东西 - 原始数据。 它的实现方式主要是 C++ 和编译器实现的一个怪癖(“原始”类型的布局规则比结构或类简单得多)。 这种事情主要出现在低级代码中,老实说,不应该使用打印。 有时不可能。 例如,我的用例是通过 I2C(或 RS485)接收原始字节并将其解析为帧,然后将其放入struct中。为什么我想在实际数据上序列化原始字节?我几乎可以立即访问数据? 总结一下这个有点啰嗦的答案,为 std::byte 提供运算符重载以与 iostream 一起使用违背了这种类型的意图。 而尽可能在代码中表达意图是现代编程的重要原则之一。

回答 2 投票 0

如何使用 std::cin 读取 bool

我是 C++ 新手,我想知道函数 cin 在布尔数据的情况下如何工作。 比方说: 布尔a; 辛 >> 一个; 我知道如果我给 0 或 1,我的数据 a 将是 eit...

回答 2 投票 0

cin 和布尔输入

我是 C++ 新手,我想知道函数 cin 在布尔数据的情况下如何工作。 比方说: 布尔a; 辛 >> 一个; 我知道如果我给 0 或 1,我的数据 a 将是 eit...

回答 2 投票 0

使用 std::cin 读取布尔值并输入十进制数字作为输入时的令人惊讶的结果[重复]

我正在学习 bool 变量。我了解到非零值被认为是 true,当我使用 cin 将 2 分配给 bool 时,结果是 true,正如预期的那样。但是当我使用0.1时,结果...

回答 1 投票 0

我需要使用 Visual Studio 社区中的 CLR 控制台应用程序使用 C++ 中的面向对象编程来解决练习

乒乓球视频游戏 需要模拟著名的视频游戏 ping。为此,需要实现一个 C++ 程序,该程序从屏幕的一端移动一个盒子,并且在每次弹起时它都有一个

回答 1 投票 0

Cin 总是失败并且在管道之后不停止执行

这里是函数的代码: #包括 #包括 #包括 #包括 使用命名空间 std; int main (int argc, char **argv) { 字符串

回答 1 投票 0

从 std::cin 读取 int_fast8_t 时的结果令人惊讶

我正在尝试构建一个简单的cpp代码来检查输入数字是否是大于2的偶数(尝试使用cstdint实验性地解决codeforce的西瓜问题)。问题是,当我使用

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.