C++ C++;从1字符转换为字符串?

C++ C++;从1字符转换为字符串?,c++,casting,C++,Casting,我只需要将1char转换为string。相反的方法非常简单,如str[0] 以下内容对我不起作用: char c = 34; string(1,c); //this doesn't work, the string is always empty. string s(c); //also doesn't work. boost::lexical_cast<string>((int)c); //also doesn't work. charc=34; 字符串(1,c); //这不

我只需要将1
char
转换为
string
。相反的方法非常简单,如
str[0]

以下内容对我不起作用:

char c = 34;
string(1,c);
//this doesn't work, the string is always empty.

string s(c);
//also doesn't work.

boost::lexical_cast<string>((int)c);
//also doesn't work.
charc=34;
字符串(1,c);
//这不起作用,字符串总是空的。
字符串s(c);
//也不起作用。
词法转换((int)c);
//也不起作用。

我真的认为铸造方法会很好。既然没有,你可以试试stringstream。一个例子如下:

#include <sstream>
#include <string>
std::stringstream ss;
std::string target;
char mychar = 'a';
ss << mychar;
ss >> target;
#包括
#包括
std::stringstream-ss;
std::字符串目标;
char mychar='a';
ss>target;
所有

std::string s(1, c); std::cout << s << std::endl;

std::字符串s(1,c);std::cout无论您有多少
char
变量,此解决方案都将有效:

char c1 = 'z';
char c2 = 'w';
std::string s1{c1};
std::string s12{c1, c2};

无法复制:是什么让您认为
字符串(1,c)
不起作用?这是正确的方法。你用的是哪种编译器?什么环境。可能这是编译器的错误。libc++abi.dylib:terminate调用抛出exception@weeo-错误可能在程序的其他地方。请发布一个自包含、可复制的示例来演示错误,以便我们可以帮助您找出错误所在。我不认为这个特定的字符串构造函数不起作用这一事实与真正的问题有任何关系。可能是对的,但我想我会提供一个简单的答案:p此解决方案有效,但是使用stringstream(代码< >代码>)不需要,因为它将包含整个库在项目中,减慢编译过程。尽量避免包括不必要的依赖项到您的项目。最短的方式是:Strass=“++C;@ DOCURRAM NO.1!您使用的引用标记是无效C++;2。即使您的意思是“代码> s=”。+c
它只是UB,因为它并不意味着“将空字符串与字符
c
连接起来”,它意味着“指向空字符串的某个副本的指针,由
c
的数值推进(这肯定不是您想要的);3.如果您的意思是
s=”“s+c
,它仍然比
s{1,c}长
…(你必须使用std::literals编写
某处…对不起,我的意思是:string s=string()+'a';@doctorram一个较短的方法是
string s={c};
string s({c});
string s{c}
我认为@RemyLebeau的解决方案在您必须创建一个字符串并将其作为参数在一行中传递给函数时效果最好
std::string s; s.push_back(c); std::cout << s << std::endl;
char c1 = 'z';
char c2 = 'w';
std::string s1{c1};
std::string s12{c1, c2};