繁体   English   中英

在C ++中将wstring转换为const * char

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM