C++ 如何使用stringstream作为c++;功能?

C++ 如何使用stringstream作为c++;功能?,c++,string,function,concatenation,stringstream,C++,String,Function,Concatenation,Stringstream,我正在寻找用其他原语附加字符串的解决方案,发现stringstream是最简单的解决方案。然而,我想简化这个过程,所以我想做一个函数来简化它的使用。如果您提出了连接的替代方法,我需要最终结果为char*。我使用了一个循环(I): 然后我可以做一些类似的事情: std::stringstream ss; ss << "test" << i; char* name = string_to_pointer( name, &ss ); std::string

我正在寻找用其他原语附加字符串的解决方案,发现stringstream是最简单的解决方案。然而,我想简化这个过程,所以我想做一个函数来简化它的使用。如果您提出了连接的替代方法,我需要最终结果为char*。我使用了一个循环(I):

然后我可以做一些类似的事情:

std::stringstream ss;
ss << "test" << i;      
char* name = string_to_pointer( name, &ss );
std::stringstream-ss;
党卫军
会更干净!与
string\u to\u cstring(ss.str())一起使用

需要返回的C字符串是可更改的吗?因为如果没有,只要在需要的地方使用
ss.str().c_str()

或使用:

char* result = new char[ss.str().size() + 1] (); // value initialized
ss.str().copy(result,std::string::npos);

使用
std::stringstream::str()
函数检索字符串的内容

例如:

int foo = 42;
double bar = 12.67;

std::stringstream ss;
ss << "foo bar - " << foo << ' ' << bar;

std::string result = ss.str();

像这样的东西怎么样:

#include <string>
#include <sstream>

class ToString {
  std::ostringstream stream;
public:
  template<typename T>
  inline ToString &operator<<(const T&val) {
    stream << val;
    return *this;
  }

  inline operator std::string() const {
    return stream.str();
  } 
};
std::string str = ToString() << "Test " << 5 << " and " << 4.2;
#包括
#包括
类ToString{
std::奥斯汀溪流;
公众:
模板

内联ToString&Operator您是否尝试过?编辑:您的运行时问题是什么?为什么需要执行“字符串\u到\u指针”转换?你确定你希望最终结果是“char*”?如果它是final,那么就不需要再修改它了,所以可能是const char*?这样你可以继续使用stringstream直到最后。string\u to\u指针很奇怪:它不使用它的第一个参数。我真的看不出这个函数的用途…你使用的是trings和stringstreams这样你就可以避免类似strcpy的东西谢谢你的回复。我最终选择了一条完全不同的路线,我想这只是我尝试了100种方法,但问题变得更加混乱的一个例子。从你的所有回复中,我发现我的问题有很多错误,谢谢大家。我找到了解决方案与您的第二个代码块非常相似。我无法将该块压缩为易于使用的函数。类似于:
char*myFunc(char*dest,stringstream ss)
char*myFunc(char*dest,string s)
。具体来说:
错误5错误C3867:'std::basic_string::c_str':函数调用缺少参数列表;使用“&std::basic_string::c_str”创建指向成员的指针
感谢您的响应,对于像我这样从未见过
内联运算符std::string()的人来说非常简洁const
作为一个成员函数,它被称为a。我在中发现了它。
int foo = 42;
double bar = 12.67;

std::stringstream ss;
ss << "foo bar - " << foo << ' ' << bar;

std::string result = ss.str();
std::unique_ptr<char[]> cstring = new char[result.size() + 1];
strcpy(cstring.get(), result.c_str());
#include <string>
#include <sstream>

class ToString {
  std::ostringstream stream;
public:
  template<typename T>
  inline ToString &operator<<(const T&val) {
    stream << val;
    return *this;
  }

  inline operator std::string() const {
    return stream.str();
  } 
};
std::string str = ToString() << "Test " << 5 << " and " << 4.2;