iostream相关内容
如何使用 cout 打印 0x0a 而不是 0xa? #include 使用 std::cout;使用 std::endl;使用标准:::十六进制;int main(){cout
..
几周前,我使用 std::ifstream 读取一些文件,但打开时立即失败,因为文件大于 4GB.当时我找不到合适的答案来解释为什么它被限制为 32 位文件大小,所以我使用原生 OS API 编写了自己的 API. 那么,我的问题是:有没有办法使用 std::ifstream/std::ostream(IE:标准 C++)处理大于 4GB 的文件 编辑:使用来自 VC 9 编译器 (V
..
我正在用 C 编写 BF 解释器,但在读取文件时遇到了问题.我曾经使用 scanf 来读取第一个字符串,但随后你的 BF 代码中不能有空格或注释. 现在这就是我所拥有的. char *readFile(char *fileName){文件 *文件;char *code = malloc(1000 * sizeof(char));file = fopen(fileName, "r");做{*
..
这就是重点.如何写入和读取其中包含 std::vector 的二进制文件? 我在想: //============ 将向量写入文件 ================const int DIM = 6;int array[DIM] = {1,2,3,4,5,6};std::vectormyVector(array, array + DIM);ofstream 文件(路径,ios::out |
..
我有一个已经包含一些数据的文件(比如 8 kB).我想从文件的开头读取一些内容,然后从我读完的地方开始覆盖数据.所以我尝试使用以下代码: std::fstream stream("filename", std::ios::in | std::ios::out | std::ios::binary);字符字节;stream.read(&byte, 1);//流.seekp(1);int bytes
..
我一直想知道为什么 C++ 标准库使用 char 类型而不是 unsigned char 类型来实例化 basic_[io]stream 及其所有变体.char 意味着(取决于它是否有符号)你可以有像 get() 这样的操作的上溢和下溢,这将导致所涉及的变量的实现定义的值.另一个例子是当你想使用 put 函数将一个未格式化的字节输出到 ostream 时. 有什么想法吗? 注意:我还是
..
我开始学习 C++,我读了一本书,书中写道我必须使用 头文件,因为字符串类型不是直接内置到编译器中的.如果我使用 我可以使用字符串类型. 如果我包含 标头,当我想使用字符串类型时,是否必须包含 标头?为什么?有什么区别吗? 解决方案 是的,您必须包含您使用的内容.标准头相互包含并不是强制性的(IIRC 除外).它现在可能可以工作,但在不同的编译器上可能会失败.
..
我需要一个具有双向迭代器/适配器的输入文件流. 不幸的是,std::ifstream(和类似的)只能与 std::istream_iterator 一起使用,它是一种不能后退的前向迭代器.(还是我在这里弄错了?) 我可以简单地将整个文件加载到内存中,然后在数组上使用更强大的随机访问迭代器;但是我想避免这种情况,并且只阅读我真正需要的内容.可能我真的只需要文件的一小部分. 我可以使
..
我正在为使用 boost tcp::iostream(充当 HTTP 服务器)进行输入和输出的代码添加 HTTPS 支持. 我找到了使用 boost::asio::read/boost::asio::write 进行 SSL 输入/输出的示例(并且有一个工作的玩具 HTTPS 服务器),但没有一个使用 iostreams 和 > 操作员.如何将 ssl::stream 转换为 iost
..
简短的问题:我有一个实时模拟,它作为后台进程运行,并通过管道连接到调用程序.我想使用 stdin 向该进程发送命令,以通过 stdout 从中获取某些信息.现在因为它是一个实时进程,所以它必须是一个非阻塞输入.boost::asio::async_read 与 iostream::cin 结合使用是否是该任务的好主意?如果可行,我将如何使用该功能?还有什么建议吗? 解决方案 看boost:
..
我想将两个(或更多)流合二为一.我的目标是将指向 cout、cerr 和 clog 的任何输出与原始流一起输出到文件中.(例如,当事情被记录到控制台时.关闭后,我希望仍然能够返回并查看输出.) 我正在考虑做这样的事情: class stream_compose : 公共流缓冲,私有 boost::noncopyable{上市://取两个流,将它们保存在 stream_holder 中,//
..
我正在编写一个直接从用户输入读取数据的程序,我想知道我如何(没有循环)从标准输入读取所有数据直到 EOF.我正在考虑使用 cin.get( input, '\0' ) 但 '\0' 并不是真正的 EOF 字符,它只是读取到 EOF 或 '\0',以先到者为准. 还是使用循环是唯一的方法?如果是这样,最好的方法是什么? 解决方案 从 stdin 读取可变数量数据的唯一方法是使用循环.我
..
我将简单的文本文件加载到内存中.我想从内存中读取,就像从这里读取光盘一样: ifstream 文件;字符串线;file.open("C:\\file.txt");如果(文件.is_open()){而(文件.好()){获取行(文件,行);}}file.close(); 但我在内存中有文件.我在内存中有一个地址和这个文件的大小. 我必须做什么才能像上面代码中处理文件一样流畅? 解决方案
..
大多数学习 C 的 C++ 用户更喜欢使用 printf/scanf 系列函数,即使他们在使用 C++ 编码. 虽然我承认我发现界面更好(尤其是类似 POSIX 的格式和本地化),但似乎压倒性的关注是性能. 看看这个问题: 如何加快逐行读取文件的速度 似乎最好的答案是使用 fscanf 并且 C++ ifstream 始终慢 2-3 倍. 我认为如果我们可以编译一个“
..
我有一个多线程应用程序,它大量使用 std::cout 进行日志记录而没有任何锁定.在这种情况下,如何轻松添加锁机制使 std::cout 成为线程安全的? 我不想搜索每次出现的 std::cout 并添加一行锁定代码.太麻烦了. 有什么更好的做法吗? 解决方案 注意:这个答案是 pre-C++20 所以它不使用 std::osyncstream 具有单独的缓冲,但使用锁代替.
..
有什么方法可以利用 Win32 API 中的文件创建标志,例如 FILE_FLAG_DELETE_ON_CLOSE 或 FILE_FLAG_WRITE_THROUGH,如此处所述http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx ,然后将该句柄强制转换为 std::ofstream ? ofstream 的接口显然是平台无
..
我习惯了 Delphi VCL 框架,其中 TStreams 在错误时抛出异常(例如找不到文件、磁盘已满).我正在移植一些代码来使用 C++ STL,并且被 iostreams 发现,默认情况下不会抛出异常,而是设置 badbit/failbit 标志. 两个问题... a:为什么会这样 - 对于从一开始就内置异常的语言来说,这似乎是一个奇怪的设计决定? b:如何最好地避免这种情
..
如何将 std::ostream 绑定到 std::cout 或 std::ofstream 对象,具体取决于某个程序条件?尽管由于多种原因这无效,但我想实现语义上等同于以下内容的内容: std::ostream out = 条件?&std::cout : std::ofstream(filename); 我见过一些不是异常安全的例子,例如来自 http://www2.roguewave.co
..
std::cout 不起作用?我有一个 c/c++ 代码,但是 std::cout 不打印任何内容,甚至不打印常量字符串(例如“hello"). 有什么方法可以检查 cout 是否能够/无法打开流?有一些成员函数,比如good()、bad(),...但我不知道哪个适合我. 解决方案 确保刷新流.这是必需的,因为输出流是缓冲的,除非您自己手动刷新缓冲区,否则您无法保证何时刷新缓冲区.
..
给定一个类 struct {国际a1;布尔 a2;...字符* a500;...字符 a10000;} 我想打印或流式输出 "a1 值为 SOME_VALUE"“a2 值为 SOME_VALUE"“a500 值为 SOME_VALUE"...“a10000 值为 SOME_VALUE" 成员变量的类型不一样(主要是int、bool、char*等,即不需要重载
..