问题标签 [iostream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1061 浏览

c++ - std::ostream 第一次使用时未正确格式化 const char*

我一直在编写一个自定义std::streambuf作为日志系统的一部分。但是,我遇到了来自流的第一段输出格式不正确的问题。

这是一个不使用任何自定义streambufostream类的简化测试用例:

使用 g++ 编译:

请注意,第一个字符串文字(“test”)被格式化为通用指针(字符串的地址以十六进制输出),而第二个字符串文字的格式正确。

我唯一能想到的是,直接使用这样的新构造std::ostream(即,不将其放入变量)是无效的。如果是这种情况,我非常想知道究竟是什么使它无效(我认为这与 iostreams 无关,而是与评估顺序或与构造函数或其他东西的交互)。如果这不是问题,那是什么?

0 投票
6 回答
25980 浏览

c++ - 直接从 std::istream 读取到 std::string

无论如何,是否可以直接将已知数量的字节读取到 std::string 中,而无需创建临时缓冲区来执行此操作?

例如,目前我可以通过

0 投票
5 回答
88830 浏览

c++ - #在 C 中包含 iostream?

在 C++ 中,我们总是将以下内容放在程序的顶部

C的呢?

0 投票
3 回答
654 浏览

c++ - 为什么`包括` 最终包含了这么多 * 文件?

跟进这个问题

当我这样做的时候include <iostream>
碰巧它包含了许多从/usr/include.Agrep "\usr\include"g++ -E prog.cpp大约 1260 个条目的文件;)。

他们是一种控制各种文件的方法吗?
平台:Linux
G++ 版本:4.2.4

0 投票
3 回答
598 浏览

c++ - C++ 重载 >> 运算符

我需要重载流提取运算符。我需要通过允许用户在提示符下输入字符串来做到这一点,比如“iamastring”,然后操作员将从字符串中提取每个字符并测试它是否是空格以及是否不是空格存储它在一个字符数组中,然后传递给一个对象。

@Chip 等人。例如输出我不希望它向屏幕输出任何内容。相反,在用户输入字符串并点击输入后,应再次提示用户输入新的菜单选择。就目前而言,用户输入一个字符串按回车键,然后显示“错误读取错误”,提示又回来等待新的输入。

0 投票
2 回答
6538 浏览

c++ - 来自 file_descriptor_source (boost::iostreams) 或文件的 istream

我需要为我的程序输入做这样的事情:

我可以看到一种解决方案 - 在两种情况下都使用 _popen,如果文件已经解压缩,只需将文件复制到标准输出,但这似乎不是很优雅。

有趣的是,这与 C 相比有多么困难——我猜标准库错过了它。现在我迷失在神秘的 boost::iostreams 文档中。如果有人知道如何,示例代码会很棒。

0 投票
2 回答
1773 浏览

c++ - 如何在函数中使用传递 ifstream 输入和输出?C++

例如:

如何编写函数 translateStream? void translateStream(XXXX input, YYYY output)? 输入输出的类型有哪些?

谢谢

0 投票
2 回答
4278 浏览

c++ - 可以使用 getline() 从 fstream 中获取 char 数组吗

我想在已经使用 char 数组处理字符串的程序中添加一个新的(fstream)函数。问题是下面的代码会产生字符串,我能想到的唯一方法是让一个中间函数将字符串逐个字符地复制到一个新的字符数组中,然后将它们传递给程序中的函数,取回结果,然后逐个字符地将结果复制回字符串中。

当然(希望)一定有更好的方法吗?

谢谢!

translateWord 函数:

0 投票
1 回答
1246 浏览

c++ - 如何在 C++ 中创建“默认”流插入运算符?

我有一个类似于 boost::any 的类,因为它是一个模板化的容器类。我想要一种将包含的值写入字符串的方法。但是,如果包含的类型不提供流插入运算符,我希望我的方法返回一些默认字符串,而不是编译失败。下面是我已经接近的情况,并且应该清楚地说明我正在尝试做什么:

这工作得很好,但有一些警告。例如,如果我想为一个类实际提供一个重载的插入运算符,那么该运算符必须与该类位于同一命名空间中,或者它必须位于 W 命名空间中才能考虑。

对于已经具有非成员 std::operator<< 的任何类型,例如 char 和 std::string,它也存在问题。如果 T 是这些类型之一,则oss << t_上面的行变得模棱两可。这可以通过在 W 命名空间中为这些类型添加重载来解决,例如:

我的问题是,有没有人找到比这更好的方法?为什么我必须为 std::string 之类的东西添加自己的重载?这都是根据标准支持的,还是我在利用非标准行为?(我正在使用 g++ 4.3.3 进行测试)

0 投票
3 回答
10560 浏览

c++ - C++ cin.fail() 问题

运行以下代码并输入数字时,它工作正常。但是当输入字母时,程序进入死循环,显示“输入数字(0退出):cin失败”。

我的意图是处理 cin 失败案例并再次提示用户。