如何在将char*转换为wchar_t*时设置Locale
How to setLocale when converting char* to wchar_t*?
我不会撒谎,我从https://stackoverflow.com/a/8032109/866333:
std::wstring *GetWC(const char *c)
{
const size_t cSize = strlen(c)+1;
std::wstring wc( cSize, L'#' );
mbstowcs( &wc[0], c, cSize );
//wchar_t wc[cSize];
//mbstowcs (wc, c, cSize);
return wc;
}
我正试图弄清楚什么意思,例如:
记住在main中设置相关的语言环境。
例如,setlocale(LC_ALL,")。
在我的案例中,我从文件中读取UTF-8(最初是ISO 8859-1,但这是突破性的东西),我相信我所有的文字都是ISO 8859-1-因为这是我的语言环境,我有太多的源文件无法在Windows中轻松转换。我的目标是安卓系统。我有点希望把ISO 8859-1和UTF-8混合在一起!我必须转换成一个吗?
让我说对了,我需要setLocale
来委派转换例程吗?就像我拍他们一样!我热衷于效率,但这似乎是在扰乱可能静态的全局变量?如果区域设置最初完全不同,这肯定会产生副作用吗?
如果没有setLocale
或mbstowcs
https://stackoverflow.com/a/4826290/866333
wchar_t ws[100];
swprintf(ws, 100, L"%hs", "ansi string");
还有可能吗?我在libc手册中看不到%hs。
setLocale
是否可以避免将我的完整8位(ASCII/ISO-8859-1)转换为多字节UTF-8,从而避免保存字符串操作?
很抱歉有这么多问题。
不使用setLocale
,您可以简单地进行
swprintf(ws, 100, L"%s", "answersi string");
实时演示
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- std::locale 向"en_US.UTF-8"区域设置抛出runtime_error异常
- 为什么当我将 std::locale 设置为 "zh_CN.UTF-8" 时 std::istringstream 失败?
- 如何在将char*转换为wchar_t*时设置Locale