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

Posted

技术标签:

【中文标题】在 C++ 中将 std::string 转换为 Unicode 字符串【英文标题】:Converting std::string to Unicode String in c++ 【发布时间】:2013-02-20 10:59:49 【问题描述】:

我有问题。我需要将字符串类型转换为 unicode。 我知道这样的方法

string.c_str();

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

我有功能

void modify(string infstring, string* poststring)

在其中我需要在备忘录中显示 infstring。像一个

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

但编译器告诉我“E2085 Invalid Pointer added”

我该如何解决我的问题?

【问题讨论】:

现在它说“无法将'字符串'转换为 Unicode 字符串”。我认为, ss.str() 返回字符串类型,但我需要 unicode 字符串。有什么想法吗? “Unicode 字符串”是什么意思?那不是C++类型,你指的是什么类型? 【参考方案1】:
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() 函数采用不同的类型,但您没有提供足够的信息来了解您要询问的内容,这仍然行不通。

【讨论】:

OP 最有可能使用 C++Builder(语法与其 VCL UI 框架匹配),在这种情况下,替代方案将是:Form1->Memo1->Lines->Add("some text " + String(infstring.c_str(), infstring.length()) + " some text"); VCL 的 String 类(大写 @987654329 @),Add() 将其作为输入,在其构造函数中接受 char* 和可选长度,并且可以与 char* 值连接以创建临时 String 实例。【参考方案2】:

使用字符串流

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

【讨论】:

以上是关于在 C++ 中将 std::string 转换为 Unicode 字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将 std::string 转换为 const char [重复]

如何在 C++ 中将 uint8_t 的向量转换为 std::string?

在 C++ 中将字符串转换为 Cstring

如何在 C++ 中将十六进制字符串转换为字节字符串? [复制]

C++ .NET 将 System::String 转换为 std::string

C++ 性能挑战:整数到 std::string 的转换