std::字符串与 PCWSTR 的对话
std::string converstion to PCWSTR
我从用户那里获取信息并将它们保存在 std::string 变量中,如下所示:
std::string username;
std::string domain;
std::string hash_ntlm;
std::string process_name;
std::cout << "ntUsername: ";
std::getline(std::cin, username);
std::cout << "tDomain: ";
std::getline(std::cin, domain);
std::cout << "tNTLM Hash: ";
std::getline(std::cin, hash_ntlm);
std::cout << "tProcess: ";
std::getline(std::cin, process_name);
std::cout << "n";
不幸的是,我必须使用函数来获取带有 PCWSTR 数据类型的参数,如下所示:
bool Function(ProcessCreateType arg_type, PCWSTR arg_command_Line, DWORD arg_process_flags, HANDLE arg_user_token, DWORD arg_logon_flags, PCWSTR arg_user, PCWSTR arg_domain, PCWSTR arg_password, PPROCESS_INFORMATION arg_process_infos, BOOL arg_auto_close_handle)
但是当我用 PCWSTR 数据类型重新定义变量时,我无法使用 std::getline(std::cin, domain( 获取它们;或者我无法通过调用 c_str(( 方法传递它们 std::string 变量。我应该如何解决使用 PCWSTR 和 std::string 的这个问题。
我认为您正在读取一个ansi/utf8文件。所以有了:
inline std::wstring to_wide(const char* ps) { return std::wstring(boost::locale::conv::utf_to_utf<wchar_t>(ps)); }
inline std::wstring to_wide(const std::string& str) { return to_wide(str.c_str()); }
inline std::string to_narrow(const CString& str) { return std::string(boost::locale::conv::utf_to_utf<char>((LPCTSTR)str)); }
inline std::string to_narrow(const wchar_t* ps) { return std::string(boost::locale::conv::utf_to_utf<char>(ps)); }
inline std::string to_narrow(const std::wstring& str) { return to_narrow(str.c_str()); }
您可以在多字节和 unicode 之间进行转换。我有 xml 和其他 ansi/utf8 文件,需要以 LPCTSTR 等形式呈现。
cCtrl.SetWindowText(to_wide(a_std_string).c_ctr());
这意味着使用提升进行编译。还有很多其他方法。但我发现这是最简单的。
更新:
跟随维克多的链接。看起来通过 c++11,您可以使用标准库。过去,它是助推器。但我会遵循相同的原理,像使用boost一样创建内联式衬里。
相关文章:
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 当对话框被接受时,如何用参数调用槽
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- std::字符串与 PCWSTR 的对话
- 如何多次询问来自QML对话框的输入?
- 选择文件对话框错误
- 自定义对话框(源自QDialog)不会关闭(Android)
- 如何在 MFC 对话框中使用 OnDraw
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 从资源视图访问对话框时出现问题
- 如何检测窗口当前是否正在运行模式对话框?
- "最小化"按钮不会出现在 MFC 对话框中
- 如何用C++写一个基本的来回对话
- 如何获取QNetworkConfiguration UserChoice对话框?
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何在 VC6 中的对话框中将图标设置为按钮
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- 找不到没有具有类名 #32770 的窗口名称的父窗口的子窗口(对话框)