gpt4 book ai didi

c++ - 如何在表达式中使用 ostringstream

转载 作者:太空狗 更新时间:2023-10-29 20:20:21 27 4
gpt4 key购买 nike

我使用 std::ostringstream用于格式化字符串,它继承了它的 <<来自 ostream 的运营商, 因此他们返回 ostream而不是 ostringstream ,这意味着我无法调用 ostringstream::str在结果上。这通常不是问题,因为我通常可以这样做:

ostringstream stream;
stream << whatever;
string str = stream.str();

但偶尔我需要*在单个表达式中使用它,这比较困难。我可以做

string str = ((ostringstream&) (ostringstream() << whatever)).str();

但是如果那样的话就会发生不好的事情<<重载返回一些 ostream那不是 ostringstream .我唯一能想到的另一件事就是像

string str = ([&] () -> string {ostringstream stream; stream << whatever; return stream.str();})();

但这不可能是高效的,而且肯定是非常糟糕的 C++ 代码。


*好的,我不需要,但这样做会方便得多。

最佳答案

使用

string str = ([&] () -> string
{
ostringstream stream;
stream << whatever;
return stream.str();
})();

没问题。但是,我认为最好为该操作命名,创建一个具有该名称的函数,然后调用该函数。

namespace MyApp
{
template <typename T>
std::string to_string(T const& t)
{
ostringstream stream;
stream << t;
return stream.str();
}
}

然后使用

string str = MyApp::to_string(whatever);

关于c++ - 如何在表达式中使用 ostringstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51899709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com