2016-07-05 61 views
1

我得到了一个非英文名称的文件。内容也是非英文的。从非英文文件名和非英文文本中读取C++

现在,我想在该文件上创建一个流,以便能够读取/写入数据。

此外,如果可能的话,我想检测文本的语言。

例如:

我有一个文件“հայերենTXT。”我们已经写了“Բարեւ”的文本文件中。文件是Unicode编码的。现在我想将文件名和文本读入RAM中。

另外,假设我有一些其他的文字“Վահագն”。现在我想创建一个文件“Վահագն。txt”并在文件中写入一些其他的unicode文本。

操作系统:Windows 7以上。

C++:vc120或vc140。

+2

嗨,你是什么意思,非英语?你的意思是UTF8吗?您通常可以使用ifstream从文件创建一个流,但在解释字节时需要小心。 – user1582024

+2

[如何用unicode文件名打开std :: fstream(ofstream或ifstream)](http://stackoverflow.com/questions/821873/how-to-open-an-stdfstream-ofstream-or-ifstream-同时,请告诉我们你正在工作的操作系统(Windows,Linux,MS-DOS) – mvidelgauz

+1

我想你想利用宽字符流。请看这里。 http://stackoverflow.com/questions/12789273/read-write-unicode-c –

回答

2

Windows本身对unicode有很好的支持,至少对于Basic Multilingual Plane来说,至少Windows 3带有Unicode的Unicode部分。

对于处理它的函数和宽字符流,您只需使用宽字符作为文件名称。但是如果没有看到你的代码,恐怕我不能多说了,除了使用新近的C++编译器,你可以使用WinAPI函数或标准C++库(std :: wstring和and std :: wfstream) 。但你将不得不知道你使用什么编码的文件...

+0

在fstream(不是wfstream)中使用wstring和wchar_t对我来说效果不错 – mbaros