c语言中utf-16,在c中读取UTF-16文件

本文介绍了在C语言中如何读取具有BOM的UTF-16LE编码文件。作者遇到的问题是无法正确读取包含拉丁文和西里尔文的UTF-16文件,并给出了尝试的代码片段。解决方案包括将UTF16文件转换为UTF8,以便更好地处理和显示文本。文章建议使用UTF8保存文件,因为其在各种平台上的支持更广泛。
摘要由CSDN通过智能技术生成

我正在尝试读取具有BOM的UTF-16LE编码的文件.

我试过这段代码

#include

#include

#include

#include

int main() {

std::wifstream fin("/home/asutp/test");

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

if (!fin) {

std::cout << "!fin" << std::endl;

return 1;

}

if (fin.eof()) {

std::cout << "fin.eof()" << std::endl;

return 1;

}

std::wstring wstr;

getline(fin, wstr);

std::wcout << wstr << std::endl;

if (wstr.find(L"Test") != std::string::npos) {

std::cout << "Found" << std::endl;

} else {

std::cout << "Not found" << std::endl;

}

return 0;

}

该文件可以包含拉丁文和西里尔文.我用字符串“Testтест”创建了该文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值