- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我什么时候使用 std::istringstream
、std::ostringstream
和 std::stringstream
以及为什么我不应该只使用std::stringstream
在每个场景中(是否存在任何运行时性能问题?)。
最后,这有什么不好的(而不是使用流):
std::string stHehe("Hello ");
stHehe += "stackoverflow.com";
stHehe += "!";
最佳答案
就我个人而言,我很少会想要在同一个字符串流中执行流式传输。
通常我想从一个字符串初始化一个流然后解析它;或将内容流式传输到字符串流,然后提取结果并将其存储。
如果您在同一个流之间进行流式传输,则必须非常小心流状态和流位置。
使用“只是”istringstream
或 ostringstream
更好地表达您的意图并让您检查一些愚蠢的错误,例如意外使用 <<
与 >>
.
可能会有一些性能改进,但我不会首先考虑。
你写的没有错。如果您发现它的性能不够好,那么您可以分析其他方法,否则坚持使用最清晰的方法。就个人而言,我会选择:
std::string stHehe( "Hello stackoverflow.com!" );
关于c++ - istringstream、ostringstream 和 stringstream 有什么区别?/为什么不在每种情况下都使用 stringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292107/
我需要将数据从一些 std::ostringstream 写入另一个 std::ostringstream。当然,我可以使用str()函数 std::ostringstream in; std::os
任何人都可以建议一种方法来拥有一个null std::ostringstream这避免了对传递给它的参数做任何工作 ::not_eof(c); } }; // ... nullbuf
不使用科学计数法将double转换为string,建议的方法是 std::ostringstream strStream; strStream << std::fixed; strStream <<
ostringstream ss; ss #include #include #include #include class stackbuf : public std::strea
在我的 C++ 项目中,我试图这样做: std::ostringstream stream(std::ostringstream::out); 但是我得到一个错误: error C2027: use
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: Why copying stringstream is not allowed? how copy fro
我有一个奇怪的问题,即使我向它插入输出,ostringstream 还是空的。这是我的代码: //logger.h #include #include #include using std::s
所以我在夏天写了一个 ArrayList 的实现,我有一个 toString 方法,在该方法中我使用 ostringstream 对象来添加字符串,然后输出它们。 方法如下: template std
我的代码有一些问题,因为它输出了两个不同的结果。 代码: void output(int x){ for( int i = 0; i s(result.c_str(), result.c_str()
我有以下代码: int n=2; ostringstream convert; // stream used for the conversion convert (std::ostringstr
我的程序在创建 ostringstream 类的对象时总是崩溃。我无法理解导致它崩溃的原因? 程序: #include #include #include DDF foo::send(const
我试图想出一种聪明的方法来将各种东西连接到一个函数的单个字符串参数中,而不必显式使用 ostringstream。我想到了: #define OSS(...) \ dynamic_cast(std
最近我在使用 C++ 代码时遇到了一个非常奇怪的问题。我在极简主义的例子中重现了这个案例。我们有一个 Egg 类: class Egg { private: const char* name;
在 C++ 中(在带有 gcc 的 Linux 上)我想将字节数组 ( vector ) 放入 ostringstream 中或 string . 我知道我可以使用 sprintf但它似乎不是使用 c
我一直在处理其他人的代码,并注意到在 ostringsteam 的所有使用中,他们习惯于显式附加 std::ends。 这是我从来没有做过的事情,也从来没有遇到过问题。 它似乎没有,但是 std::e
我使用 std::ostringstream用于格式化字符串,它继承了它的 string {ostringstream stream; stream string {
在 MSVC 2005 上,我有以下代码。 std::ostringstream stream("initial string "); stream << 5; std::cout << stream
我正在尝试 this answer 中提供的优雅解决方案但无论我尝试什么,我都无法通过此行的错误 Implicit instantiation of undefined template: std::
我想清除并重用一个 ostringstream(和底层缓冲区),这样我的应用就不必进行那么多分配。如何将对象重置为其初始状态? 最佳答案 我过去使用过 clear 和 str 的序列: // clea
在以下情况下获得不同的输出 std::string temp, temp1 = "foo", temp2 = "bar"; std::vector test; std::ostring
我是一名优秀的程序员,十分优秀!