gpt4 book ai didi

c++ - 如何使用 stringstream 作为 C++ 函数的参数?

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:31 25 4
gpt4 key购买 nike

我一直在寻找用其他基元附加字符串的解决方案,发现 stringstream 是最简单的解决方案。但是,我想简化流程,所以我想制作一个功能来简化它的使用。如果您提出其他连接方法,我需要最终结果为 char*。我使用了一个循环 (i):

std::stringstream ss;
ss << "test" << i;
char* name = new char[ss.str().size() + 1];//allocate
strcpy(name, ss.str().c_str());//copy and put (char*)c_str in name

所以输出是 something link test1test2test3... 这是我能想到的最合理的解决方案。我试图将它放入一个易于使用的函数中,但遇到了问题。我想做类似的事情:

char* string_to_pointer( char* dest, std::stringstream* _ss ) {
char* result = new char[_ss->str().size() + 1];
strcpy(result, _ss->str().c_str());
return result;
}

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

std::stringstream ss;
ss << "test" << i;
char* name = string_to_pointer( name, &ss );

我是 c++ 的新手,这在语法上似乎是正确的用法,但我遇到了运行时问题,并且欢迎解决如何在不导致 Boost 的情况下以易于使用的函数获得它的解决方案。

最佳答案

像这样的事情怎么样:

#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;

关于c++ - 如何使用 stringstream 作为 C++ 函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658226/

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