2011-04-24 167 views
0

例如;将char和int组合成一个字符串

int i = 1; 
char c = 'V'; 
string s; 

结果:

s = "1 V" 

任何人能告诉我该怎么做? 谢谢

+0

仅供参考,它被称为词汇转换,其次是串联。 – 2011-04-24 11:55:37

回答

8

使用std::stringstream<sstream>头文件,如:

#include <sstream> 

int i = 1; 
char c = 'V'; 

std::stringstream ss; 
ss << i << " " << c; 
std::string s = ss.str(); 
std::cout << s; 

输出:

1 V 

我使用它你可以在一行中做到这一点实现stringbuilder

std::string s = stringbuilder() << i << " " << c; 

这里是stringbuilder实现:

struct stringbuilder 
{ 
    std::stringstream ss; 
    template<typename T> 
    stringbuilder & operator << (const T &data) 
    { 
     ss << data; 
     return *this; 
    } 
    operator std::string() { return ss.str(); } 
}; 
+0

感谢Nawaz,如果我使用streamstring,那么当我想再次使用它时,如何在下一次清除它?我试过ss.flush()和ss.clear(),但他们没有工作 – Xitrum 2011-04-24 12:04:34

+1

@ user552279:'ss.str(“”);' – ildjarn 2011-04-24 12:11:05

+0

@ user552279:'ss.str(“”)''''空,正如@ildjarn所建议的那样。 – Nawaz 2011-04-24 12:16:33

1
stringstream str; 

str<<< i << c; 

string s=str.str();