C++ 读入文件中的中文字符

环境:C++,VS2013,32位WIN7

一、文件类型为Unicode

////// 函数功能: 读入文件内容
/// 参考:http://blog.csdn.net/xiaobai1593/article/details/7060730
///
wstring readFileIntoStringuNNICODE(const char * filename) {
	ifstream ifile(filename, ios::binary);
	wstring res;
	if (ifile) {
		wchar_t wc;
		while (!ifile.eof()) {
			ifile.read((char *)(&wc), 2);
			res = res + wc;
		}
	}
	ifile.close();
	return res;
}

  

二、文件类型为ANSI

///
/// 函数功能:读入ANSI文件中的中文字符
/// 参考:http://tieba.baidu.com/p/1865939813
///
wstring readFileIntoStringuANSI(const char * filename) {
	wifstream ifile(filename, ios::binary);
	wstring res;
	ifile.imbue(std::locale("CHS"));
	if (ifile) {
		wchar_t wc;
		while (!ifile.eof()) {
			ifile.read((&wc), 1);
			res = res + wc;
		}
	}
	ifile.close();
	return res;
}

  

三、文件类型为UTF-8

时间: 2024-10-11 05:12:21

C++ 读入文件中的中文字符的相关文章

WP8_UTF8 to GB2312转码 (url网址中带中文字符的处理)

直接使用例如:http://www.abc.php?name=中文符 ,客户端调用,在服务端修改后,会出现乱码, 而windows phone 又不能直接支持gb2312, 经过大量分析和验证,发现 凡事 经过"从汉字转换到16进制"后, 即可成功实现转码,代码如下: string text = "中文符"; string url1 = "http://www.abc.php?name="; string url2 = url1 + Utf8To

解决eclipse中对于中文字符的识别问题

在eclipse中编辑代码必不可少的要用到中文注释,但是中文注释在eclipse中用到的话可能会产生编译错误. 一种比较常见的情况就是在其他IDE中编辑的代码直接拷贝到eclipse 中进行编译会报 \65279  像这样的一些错误 这个错误就是说编码无法识别  一般这些都是在UTF-8格式下无法识别 整个文件扔进二进制文件去看一下   就能看出来一点端倪 有些字符居然是5打头的   这些在asic码中肯定是无法识别的 修改办法: 1)最简单的办法就是不要随便复制粘贴外来的代码   在代码规范中

java面试题:如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。

package com.swift; public class TotalNumber_String { public static void main(String[] args) { /* * 如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量, * 假设字符中没有中文字符.英文字符.数字字符之外的其他特殊字符. */ String str="aaaabbc中国1512"; int engishCount =

抽取网页源代码中的中文字符

通过正则匹配中文字符,写入新的文本,我在这里删除了表示字体的中文 import re f=open(r'C:\Users\lenovo\Desktop\1.txt','r',encoding='utf8') m= re.compile(u"[\u4e00-\u9fa5]+") p=open(r'C:\Users\lenovo\Desktop\2.txt','w',encoding='utf8') for line in f.readlines(): list=re.findall(m,

mysql 使用正则REGEXP匹配字段中的中文字符

1.匹配包含中文和其他字符的字段: SELECT * FROM table WHERE HEX(name) REGEXP '[[:<]]*(e[4-9][0-9a-f]{4})+.*[[:>:]]' 2.匹配只包含中文.字母.数字的字段 : SELECT * FROM table WHERE HEX(name) REGEXP '[[:<:]](e[4-9][0-9a-f]{4}|3[0-9]|4[0-9A-F]|5[0-9A]|6[0-9A-F]|7[0-9A]|5F)+[[:>:

[转载]Unicode中对中文字符的编码

以前写过一篇贴子是写中文在unicode中的编码范围 unicode中文范围,但写的不是很详细,今天再次研究了下unicode,并给出详细的unicode取值范围. 本次研究的unicode对象是unicode 5.2.0版本.现在最新的是6.0版 对于这次研究的unicode把编码分为以下几个平面(英文中是plane,可以认为就是不同的区位) Unicode可以逻辑分为17平面(Plane),每个平面拥有65536( = 216)个代码点,虽然目前只有少数平面被使用. 平面0 (0000–FF

java中Cookie中文字符乱码问题

如果Cookie中的Value 中有中文字符出现,在加入Cookie的时候,会出现下面的错误: java.lang.IllegalArgumentException: Control character in cookie value or attribute. 当我们设定Cookie的Value的值得时候: cookie.setValue(ret); 改为如下方式尽心编码! cookie.setValue(URLEncoder.encode(ret, "utf-8"));使用指定的编

jsp与mysql中的中文字符乱码问题

刚开始自学jsp,在练习的过程中遇到了一个很严重的问题,就是中文字符乱码的问题,我用了三天的时间,搜集资料,终于解决了这个问题,现在对学到的东西进行一下总结整理. 1.首先是jsp页面显示乱码的问题,<title></title>标签中有中文有英文,设置<meta charset="utf-8" > 显示乱码,改为gbk则可正常显示,其他页面使用utf-8则显示正常.最终发现是因为文件创建是用了不同的方法,一般情况下,用记事本编写代码,文件另存为*.

php中截取中文字符会出现乱码的问题

php中内置函数substr()可以对指定字符串进行截取,不过,它只对全英文字符串的截取是比较适合的.如果字符串中出现了中文,就有可能导致截取后出现乱码的问题,甚至在一些场景中如json编码的时候会导致输出结果为null. 原因是不同字符集中每个字符占用的字节数不一样,如UTF-8编码中每个汉字占3字节,而GB2312汉字占2字节,英文则都只占1字节.确切的说substr()中后两个参数指定的是字节数量而不是字符数量,所以就有可能出现最后一个汉字字符截取不完整的情况从而出现中文乱码. 遇到中文字