在 C++ 中将 std::string 转换为 LPCWSTR

C++ 为我们提供了一种便利,可以将字符序列表示为类对象。这个类就是 std::string。在内部,std::string 类将字符串表示为字符(字节)序列,我们可以使用 [] 运算符访问每个字符。

字符数组与字符串的区别在于,字符数组仅仅是一个以空字符结尾的字符数组,而字符串类是 C++ 库的一部分,它赋予我们创建对象的功能,让我们可以轻松地存储字符串字面量。我们可以使用下面的语法来声明和初始化字符串,

语法:

> string str = "GeeksforGeeks";

std::LPCWSTR
LPCWSTR 代表指向常量宽字符串的长指针。它是一个指向 16 位 Unicode 字符常量字符串的 32 位 指针,该字符串可能以空字符结尾。简单来说,它类似于字符串,但使用的是宽字符。
语法:

> LPCWSTR str = "GeeksforGeeks";

这种字符串是由 Microsoft 定义的,程序员需要包含 头文件才能使用 LPCWSTR 字符串。本文重点介绍如何在 C++ (Unicode) 中将 std::string 转换为 LPCWSTR。

在 C++ (Unicode) 中将 std::string 转换为 LPCWSTR

将字符串转换为 LPCWSTR 是一个两步过程。

步骤1: 第一步是将 String 类的初始化对象转换为 wstring。std::wstring 用于宽字符/Unicode (UTF-16) 字符串。我们可以通过将给定字符串的端点迭代器传递给 std::wstring() 初始化器来轻松完成转换。

> std::wstring(str.begin(), str.end())

它返回一个 wstring 对象。

步骤 2: 下一步是对返回的 wstring 对象(从步骤1获得)应用 c_str() 方法。这将返回等效的 LPCWSTR 字符串。下面的源代码演示了上述过程。

下面是实现上述方法的 C++ 程序-

// C++ program to illustrate how to
// convert std:: string to LPCWSTR

#include 
#include 

using namespace std;

int main()
{

    // Initializing a string object
    string str = "GeeksforGeeks";

    // Initializing an object of wstring
    wstring temp = wstring(str.begin(), str.end());

    // Applying c_str() method on temp
    LPCWSTR wideString = temp.c_str();

    // Print strings
    cout << "str is : " << str << endl;
    wcout << "wideString is : "
          << wideString << endl;
}

输出:

> str is: "GeeksforGeeks"

>

>

> wideString is: "GeeksforGeeks"

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/29232.html
点赞
0.00 平均评分 (0% 分数) - 0