[英]Convert wstring to const *char in c++
我有一个wstring,我想将其转换为const char以便使用fstream库的write函数编写它。 我试图做的是以下几点:
std::ofstream out("test.txt", std::ios::out | std::ios::app | std::ios::binary);
char mbstr[11];
std::wcstombs(mbstr, strValue.c_str(), 11); //strValue my wstring
out.write(mbstr, 11);
... // i have got another four wstring.
我不确定我做了什么,但是结果是一个文本文件很奇怪:
0.100693 ÌÌ0.000000 ÌÌ0.004094 ÌÌ0.360069 ÌÌ0.086034
知道如何在文件中正确写入wstring吗?
您的转换正确,但是书写不正确。 只需执行out << mbstr;
。 当前,无论数组中有什么内容,您都将在其中写入11个字节,并且看到的奇怪字符是wcstombs
写入区域之后的随机垃圾。
当然,更好的方法可能是首先使用wofstream
。 然后,您可以直接直接插入宽字符串。
在C ++ 11中,您可以只使用wstring_convert
inline std::wstring ConvertEncoding(const std::string& normalString)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
return convert.from_bytes(normalString);
}
inline std::string ConvertEncodingBack(const std::wstring& wideString)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
return convert.to_bytes(wideString);
}
然后,您可以像这样使用它:
std::ofstream out("test.txt", std::ios::out | std::ios::app | std::ios::binary);
std::string normalString = ConvertEncodingBack(strValue);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.