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"