c++ oracle 导出csv_c++ oracle 导出csv_在C / C ++中从.csv文件中读取汉字

64016

I have a .csv file with chinese characters. I need to read in these chinese characters and store them for further use in the program. I know that chinese characters have to be processed in utf format, using wchar_t and the like, but I am not able to figure out exactly how this is to be done. Can anyone please help me out?

解决方案

First of all, there is no unique way to encode Chinese characters. To be able to decode the file, you first have to know which encoding has been used.

The most common ones are utf-8, utf-16, big5 and gb2312. gb2312 is for simplified characters and mostly used in mainland China. big5 is for traditional characters and mostly used in Taiwan and Hongkong. Most international companies would use utf-8 or utf-16. In Utf-8 the encodings have a variable length (with a unit length of 1 byte) and is typically more efficient to store in a text contains a lot of characters in ASCII (since these only take up on byte in UTF-8), while in UTF-16 the characters have a unit length of 2 bytes (the characters also have a variable length).

It is also worth-while to read Joel Spolky's article on unicode: http://www.joelonsoftware.com/articles/Unicode.html

Let's suppose the cvs file is encoded in UTF-8.

So you have to specify the encoding.

Using the following, the file is interpreted as UTF-8 and converted to wchar_t which has a fix size (2 bytes in Windows and 4 bytes in Linux):

const std::locale utf8_locale

= std::locale(std::locale(), new std::codecvt_utf8());

std::wifstream file("filename");

file.imbue(utf8_locale);

You can then read and process the file for example like this

std::wstring s;

while (std::getline(dict, s))

{

// Do something with the string

auto end1 = s.find_first_of(L';');

...

}

For this you'll need these header files

#include

#include

#include

#include

#include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值