C++ 内联字符串流

2024-04-12

我想用std::stringstream创建格式化字符串,但使用内联类,所以我没有stringstream局部变量到处乱飞。我的意思是这样的:

#include <iostream>
#include <ostream>
#include <string>
#include <sstream>

int main(int argc, char* argv[])
{
    std::string test = ((std::ostringstream&)
         (std::ostringstream("") << "This is a test: " << 50.1 << "abc")
         ).str();
    std::cout << test << std::endl;
    return 0;
}

这在 GCC 中编译得很好,但输出如下:

“0x401d0a50.1abc”

所以看来stringstream将第一个字符串视为指针并输出地址。随后的operator<<工作正常。

我该如何解决? 谢谢!


原因是,<<操作员是以下组织的成员void const*,但是一个自由函数std::ostream&作为左手参数char const*. Your std::ostringstream( "" )是临时的:可以在其上调用成员函数(甚至非常量成员函数),但临时不能用于初始化全局函数的非常量引用。

EDIT:

两点:首先,正如已经指出的,g++ 确实做了你想做的事 如果你指定的话想要-std=c++11。作为 T.C.指出,这是 §27.7.3.9 中指定,它提供了模板重载 全部<<带有右值引用std::istream范围。 其次,经典的解决方法是 开始表达std::ostringstream( "" ).flush() <<.... flush是一个成员函数(因此可以调用 一个临时的),它返回一个std::ostream&(所以一切 否则链得很好);它也没有做任何事 Astd::ostringstream.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 内联字符串流 的相关文章

随机推荐

  • 从字符串中过滤非数字

    仅使用快速代码 我无法弄清楚如何获取 555 555 5555 并仅返回数值并获得 5555555555 我需要删除所有括号 空格和破折号 我能找到的唯一例子是 Objective C 中的 它们似乎都使用 trim 方法 看起来好像 sw
  • 使用 Apple 登录 - Ionic 3

    我正在尝试使用以下插件和包装器在我的 ionic 3 项目上实现苹果登录 ionic cordova plugin add cordova plugin sign in with apple npm i save ionic native
  • 使用自动布局时如何调整 CALayer 的锚点?

    Note 自从提出这个问题以来 事情已经发生了变化 看here http revealapp com blog constraints and transforms html以获得近期的良好概述 在自动布局之前 您可以通过存储框架 设置锚点
  • 在 Windows 上,使用 cabal 安装的软件包似乎在 ghc/ghci 中不可用

    我在相当标准的 Windows 10 x64 系统上运行最新版本的 Haskell Platform 8 6 3 现在 我正束手无策地从 Hackage 安装软件包以使其可靠地工作 将我的问题归因于本地配置问题 我已采取了所有步骤 但没有破
  • XML 中 setTag(key, value) 的等效项

    我可以使用等价的setTag key 在我的 Android 布局文件中 如下所示
  • 过程需要未提供的参数

    我在访问 SQL Server 中的存储过程时收到错误 Server Error in Application Procedure or function ColumnSeek expects parameter template whic
  • 如何在嵌入式框架中使用 Cocoapods?

    我正在一个新项目中为我的自定义视图使用嵌入式框架 以利用 Xcode 6 中新的 IBDesignable 内容 并且我想使用 Facebook 的 Pop 为所述视图设置动画 我已使用 Cocoapods 将 Pop 添加到项目中 但嵌入
  • 使用golang exec执行docker命令失败

    我正在使用 cmd go 见下文 执行 docker 命令 但失败了 我执行以下步骤来执行并收到以下错误 go build sudo cmd Output docker run v exp a out a out ubuntu 14 04
  • 如何设置本地Python库目录/PYTHONPATH?

    今天在尝试编写一个使用 PIL 的 Python 脚本的过程中 我发现我的本地计算机上似乎没有它 OS X 10 5 8 默认安装 2 5 Python 所以我跑 easy install prefix usr local python p
  • 如何列出可用的密码算法?

    我正在得到一个密码实现Cipher getInstance String algorithm 我的印象是 我可能传递的可用算法名称根据类路径中存在的库而有所不同 我想编写一个简单的程序 可以使用不同的类路径运行 该程序将列出可用的密码算法名
  • (java) - 哈希函数在给定范围内均匀分布字符串?

    所以 我正在寻找一个哈希函数 假设没有输入倾斜 将 最多 16字节的非空字符串 合理地均匀地 分布到一个范围上 0 n where n是用户输入 但不会随时间变化 And我应该能够争论why该函数应该提供 相当均匀 的分布 最后 我所需要的
  • iOS 8:通过 UIAppearance 设置 UITableView 背景颜色

    我习惯于执行以下操作来设置所有实例的样式UITableView BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary la
  • jQuery JSON 循环嵌套对象

    我目前有这个 getJSON test json function data var items each data function key val items push li val li ul ul class my new list
  • 在 vim 中查找变量的下一次出现

    我想知道是否 如何让 vim 查找下一次出现的变量 假设变量的名称只是 n 那么 n会给我所有出现过的那封信 但这并不总是很有帮助 我想我可以创建一个正则表达式来解决这个问题 但我想知道是否有一些我还不知道的命令 击键 由于我所有的谷歌搜索
  • 以字节为单位读取大文件

    EDIT 根据建议 我已开始实施以下内容 private string Reading string filePath byte buffer new byte 100000 FileStream strm new FileStream f
  • 在Google地图中动态绘制多边形

    我是安卓新手 我一直在尝试将视野应用到谷歌地图中我当前的位置 该图显示了 iOS 中 Google 地图上的 FOV 所以基本上我做了类似的事情 添加了 5 个具有不同 alpha 的三角形 以使整个 fov 成为渐变 我必须根据设备的方位
  • 如何改变下拉列表的宽度?

    我有一个列表框 我想减小它的宽度 这是我的代码
  • Laravel 命令无法在子类中调用 $this->info()

    我刚刚开始学习 PHP 中的 OO 基本概念 Foo php class Foo extends Command public function construct parent construct public function fire
  • 如何使用 jquery 在动态生成的文本区域上自动运行方法?

    我正在使用一个插件 https github com jaz303 jquery grab bag blob master javascripts jquery autogrow textarea js https github com j
  • C++ 内联字符串流

    我想用std stringstream创建格式化字符串 但使用内联类 所以我没有stringstream局部变量到处乱飞 我的意思是这样的 include