在C++中将std::string转换为Unicode字符串

3

我有一个问题。我需要将字符串类型转换为Unicode。 我知道类似这样的方法:

string.c_str();

但是它在我的代码中不起作用。

我有一个函数

void modify(string infstring, string* poststring)

我需要在其中显示infstring到memo中。就像这样:

Form1->Memo1->Lines->Add("some text "+infstring.c_str()+" some text");

但编译器告诉我"E2085 无效的指针相加"

我该如何解决这个问题?


现在它显示“无法将'string'转换为Unicode字符串”。我认为,ss.str()返回string类型,但我需要Unicode字符串。有什么想法吗? - user2090826
1
“Unicode字符串”是什么意思?这不是C++类型,你指的是哪种类型? - Jonathan Wakely
2个回答

5
Form1->Memo1->Lines->Add("some text "+infstring.c_str()+" some text");

应该是

Form1->Memo1->Lines->Add(("some text "+infstring+" some text").c_str());

也就是说,您将字符串文字添加到std::string中,然后使用c_str()从中获取const char*

如果Add()函数采用不同类型,这仍然不起作用,但您没有提供足够的信息来了解您所询问的内容。


4
OP很可能正在使用C++Builder(语法与其VCL UI框架相匹配),此时的替代方案是:Form1->Memo1->Lines->Add("some text " + String(infstring.c_str(), infstring.length()) + " some text"); VCL的String类(大写字母S)是Add()输入的类型,构造函数接受char*和可选的长度,可以与char*值连接来创建临时的String实例。 - Remy Lebeau

3

使用stringstream

#include <sstream>
std::stringstream ss;
ss << "some text" << mystring << "some text";
Form1->Memo1->Lines->Add(ss.str().c_str());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接