iostream相关内容

使用 c++ stl 读取大于 4GB 的文件

几周前,我使用 std::ifstream 读取一些文件,但打开时立即失败,因为文件大于 4GB.当时我找不到合适的答案来解释为什么它被限制为 32 位文件大小,所以我使用原生 OS API 编写了自己的 API. 那么,我的问题是:有没有办法使用 std::ifstream/std::ostream(IE:标准 C++)处理大于 4GB 的文件 编辑:使用来自 VC 9 编译器 (V ..
发布时间:2021-12-29 12:37:19 C/C++开发

在 C 中逐字符读取文件

我正在用 C 编写 BF 解释器,但在读取文件时遇到了问题.我曾经使用 scanf 来读取第一个字符串,但随后你的 BF 代码中不能有空格或注释. 现在这就是我所拥有的. char *readFile(char *fileName){文件 *文件;char *code = malloc(1000 * sizeof(char));file = fopen(fileName, "r");做{* ..
发布时间:2021-12-29 12:34:21 其他开发

为什么 C++ 流使用 char 而不是 unsigned char?

我一直想知道为什么 C++ 标准库使用 char 类型而不是 unsigned char 类型来实例化 basic_[io]stream 及其所有变体.char 意味着(取决于它是否有符号)你可以有像 get() 这样的操作的上溢和下溢,这将导致所涉及的变量的实现定义的值.另一个例子是当你想使用 put 函数将一个未格式化的字节输出到 ostream 时. 有什么想法吗? 注意:我还是 ..
发布时间:2021-12-25 13:23:44 C/C++开发

我是否必须使用 #include <string>在 <iostream> 旁边?

我开始学习 C++,我读了一本书,书中写道我必须使用 头文件,因为字符串类型不是直接内置到编译器中的.如果我使用 我可以使用字符串类型. 如果我包含 标头,当我想使用字符串类型时,是否必须包含 标头?为什么?有什么区别吗? 解决方案 是的,您必须包含您使用的内容.标准头相互包含并不是强制性的(IIRC 除外).它现在可能可以工作,但在不同的编译器上可能会失败. ..
发布时间:2021-12-25 13:16:24 C/C++开发

文件/ifstream 上的双向迭代器

我需要一个具有双向迭代器/适配器的输入文件流. 不幸的是,std::ifstream(和类似的)只能与 std::istream_iterator 一起使用,它是一种不能后退的前向迭代器.(还是我在这里弄错了?) 我可以简单地将整个文件加载到内存中,然后在数组上使用更强大的随机访问迭代器;但是我想避免这种情况,并且只阅读我真正需要的内容.可能我真的只需要文件的一小部分. 我可以使 ..
发布时间:2021-12-24 15:35:50 C/C++开发

如何创建 boost ssl iostream?

我正在为使用 boost tcp::iostream(充当 HTTP 服务器)进行输入和输出的代码添加 HTTPS 支持. 我找到了使用 boost::asio::read/boost::asio::write 进行 SSL 输入/输出的示例(并且有一个工作的玩具 HTTPS 服务器),但没有一个使用 iostreams 和 > 操作员.如何将 ssl::stream 转换为 iost ..
发布时间:2021-12-24 15:28:40 C/C++开发

将 boost::asio::async_read 与 stdin 一起使用?

简短的问题:我有一个实时模拟,它作为后台进程运行,并通过管道连接到调用程序.我想使用 stdin 向该进程发送命令,以通过 stdout 从中获取某些信息.现在因为它是一个实时进程,所以它必须是一个非阻塞输入.boost::asio::async_read 与 iostream::cin 结合使用是否是该任务的好主意?如果可行,我将如何使用该功能?还有什么建议吗? 解决方案 看boost: ..
发布时间:2021-12-24 15:24:38 C/C++开发

如何组合输出流,以便输出一次到达多个位置?

我想将两个(或更多)流合二为一.我的目标是将指向 cout、cerr 和 clog 的任何输出与原始流一起输出到文件中.(例如,当事情被记录到控制台时.关闭后,我希望仍然能够返回并查看输出.) 我正在考虑做这样的事情: class stream_compose : 公共流缓冲,私有 boost::noncopyable{上市://取两个流,将它们保存在 stream_holder 中,// ..
发布时间:2021-12-24 15:02:05 C/C++开发

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

我正在编写一个直接从用户输入读取数据的程序,我想知道我如何(没有循环)从标准输入读取所有数据直到 EOF.我正在考虑使用 cin.get( input, '\0' ) 但 '\0' 并不是真正的 EOF 字符,它只是读取到 EOF 或 '\0',以先到者为准. 还是使用循环是唯一的方法?如果是这样,最好的方法是什么? 解决方案 从 stdin 读取可变数量数据的唯一方法是使用循环.我 ..
发布时间:2021-12-21 17:31:36 C/C++开发

如何从内存中读取,就像使用 iostream 从文件中读取一样?

我将简单的文本文件加载到内存中.我想从内存中读取,就像从这里读取光盘一样: ifstream 文件;字符串线;file.open("C:\\file.txt");如果(文件.is_open()){而(文件.好()){获取行(文件,行);}}file.close(); 但我在内存中有文件.我在内存中有一个地址和这个文件的大小. 我必须做什么才能像上面代码中处理文件一样流畅? 解决方案 ..
发布时间:2021-12-21 10:19:37 C/C++开发

如何让 IOStream 性能更好?

大多数学习 C 的 C++ 用户更喜欢使用 printf/scanf 系列函数,即使他们在使用 C++ 编码. 虽然我承认我发现界面更好(尤其是类似 POSIX 的格式和本地化),但似乎压倒性的关注是性能. 看看这个问题: 如何加快逐行读取文件的速度 似乎最好的答案是使用 fscanf 并且 C++ ifstream 始终慢 2-3 倍. 我认为如果我们可以编译一个“ ..
发布时间:2021-12-20 15:44:16 C/C++开发

如何轻松使 std::cout 线程安全?

我有一个多线程应用程序,它大量使用 std::cout 进行日志记录而没有任何锁定.在这种情况下,如何轻松添加锁机制使 std::cout 成为线程安全的? 我不想搜索每次出现的 std::cout 并添加一行锁定代码.太麻烦了. 有什么更好的做法吗? 解决方案 注意:这个答案是 pre-C++20 所以它不使用 std::osyncstream 具有单独的缓冲,但使用锁代替. ..
发布时间:2021-12-19 10:26:08 C/C++开发

为什么 C++ STL iostream 不是“异常友好的"?

我习惯了 Delphi VCL 框架,其中 TStreams 在错误时抛出异常(例如找不到文件、磁盘已满).我正在移植一些代码来使用 C++ STL,并且被 iostreams 发现,默认情况下不会抛出异常,而是设置 badbit/failbit 标志. 两个问题... a:为什么会这样 - 对于从一开始就内置异常的语言来说,这似乎是一个奇怪的设计决定? b:如何最好地避免这种情 ..
发布时间:2021-12-17 17:35:28 C/C++开发

std::cout 不会打印

std::cout 不起作用?我有一个 c/c++ 代码,但是 std::cout 不打印任何内容,甚至不打印常量字符串(例如“hello"). 有什么方法可以检查 cout 是否能够/无法打开流?有一些成员函数,比如good()、bad(),...但我不知道哪个适合我. 解决方案 确保刷新流.这是必需的,因为输出流是缓冲的,除非您自己手动刷新缓冲区,否则您无法保证何时刷新缓冲区. ..
发布时间:2021-12-14 08:14:53 C/C++开发

在 C++ 中打印出变量名的通用方法

给定一个类 struct {国际a1;布尔 a2;...字符* a500;...字符 a10000;} 我想打印或流式输出 "a1 值为 SOME_VALUE"“a2 值为 SOME_VALUE"“a500 值为 SOME_VALUE"...“a10000 值为 SOME_VALUE" 成员变量的类型不一样(主要是int、bool、char*等,即不需要重载 ..
发布时间:2021-12-13 21:28:08 C/C++开发