c语言中utf-16,c++ - 如何在C ++ 17中读取UTF-16文本文件 - 堆栈内存溢出

这篇博客主要讨论了C++新手在Visual Studio 2019中使用C++ 17标准读取UTF-16文本文件时遇到的困难。作者尝试了多种方法,包括直接读取和使用`std::codecvt_utf16`库,但都遇到了问题,如奇怪的字符和编译错误。文章中提到了`std::codecvt_utf16`在C++ 17中被弃用的警告,并请求社区提供解决方案。
摘要由CSDN通过智能技术生成

我是C ++的新手。 我想在Visual Studio 2019中的C ++ 17中读取UTF-16文本文件。

我已经在Internet上尝试了几种方法(包括StackOverflow),但没有一种起作用,并且其中一些没有编译(我认为它们仅支持较旧的编译器)。

我试图在不使用任何第三方库的情况下实现这一目标。

这会读取一个文本文件,但是每个字母之间都有一些奇怪的字符和空格。

// open file for reading

std::wifstream istrm(filename, std::ios::binary);

if (!istrm.is_open()) {

std::cout << "failed to open " << filename << '\n';

}

else {

std::wstring s;

std::getline(istrm, s);

std::wcout << s << std::endl;

}

然后我使用以下库找到了一些解决方案

#include

#include

// open file for reading

std::wifstream istrm(filename, std::ios::binary);

istrm.imbue(std::locale(istrm.getloc(), new std::codecvt_utf16));

if (!istrm.is_open()) {

std::cout << "failed to open "

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值