【发布时间】:2014-11-01 16:50:33
【问题描述】:
我正在使用Awesomium 编写一个 Win32 应用程序。根据教程部分,我可以在视图中加载本地文件:
WebURL url(WSLit("file:///C:/dev/project/util/ui/index.html"));
view_->web_view()->LoadURL(url);
这按预期工作。
当我尝试将 std::wstring 传递给 WSList 函数时:
std::wstring ui_path = L"file:///" + install_path + L"/util/ui/index.html";
WebURL url(WSLit(ui_path));
view_->web_view()->LoadURL(url);
我得到一个编译器错误:
src/main.cc(52) : 错误 C2664: 'Awesomium::WSLit' : 无法将参数 1 从 'std::wstring' 到 'const char *' 没有可用的用户定义转换运算符可以 执行此转换,否则无法调用运算符
当我尝试传递 WSLit( ui_path.c_str() ) 时,编译器会抛出另一个错误:
src/main.cc(52) : 错误 C2664: 'Awesomium::WSLit' : 无法将参数 1 从 'const wchar_t *' 到 'const char *' 指向的类型是不相关的;转换需要 reinterpret_cast、C-style cast 或 函数式转换
将其转换为const char * 类型的正确方法是什么?
编辑:
来自 Awesomium 文档:
WSLit() 是一个特殊的辅助函数,可让您声明 WebString 文字。我们的大多数 API 使用 UTF-16 字符串(用 WebString 包装),但我们添加了 WSLit(),因此您可以轻松声明 ASCII C 字符串。
【问题讨论】:
-
Awesomium 的
WSLit期望什么字符编码? -
您是否有可能遇到非 ASCII 数据?如果你这样做了,你在乎会发生什么吗?
-
快速的 Google 显示您可能应该将
WebString与 Unicode 字符串一起使用,例如WebURL url(WebString(ui_path.c_str())). -
@David:URI 可以由 Unicode 字符组成(参见 An Introduction to Multilingual Web Addresses 以供参考)。
-
@IInspectable 我知道。我的问题是修辞性的。
标签: c++ winapi visual-c++ awesomium wstring