2010-09-01 78 views
5

我有一个使用CreateFile()和WriteFile()创建的面向行的文本文件(Unicode)。使用本机Win32在'C'中读取文本文件(Unicode)

使用ReadFile()将该文件作为二进制流读取很简单,但需要额外的低级处理才能将其分解为行。

有没有一个Win32函数为我做到这一点?

请再次注意它是'C'(而不是C++),我不想使用像readline()这样的POSIX/ANSI C函数。

如果上述问题的答案是否定的,那么使用本机Win32 C函数来完成读取面向行的文本文件的“最短代码”是什么?例如使用ReadFile(),StrChr()等。

谢谢。

+1

你的意思是UTF-16LE? – dreamlax 2010-09-01 01:44:03

+0

是的。 UTF-16,Little Endian。 – 2010-09-01 01:51:09

+0

呃。 MSVC CRT支持这一点。在fopen()模式参数中使用“ccs”,然后只是fgetws()。 – 2010-09-01 02:13:25

回答

4

AFAIK没有win32函数逐行读取文件。

+0

这确实是我从目前为止所观察到的: http://msdn.microsoft.com/en-us/library/aa364232%28VS.85%29.aspx 但是我可能会遗漏一些东西。 – 2010-09-01 01:50:30

+0

以下伟大的文章明确显示,在Win32中没有gets()相当于: http://www.apitalk.com/windows-Programming/Why-Unicode-Is-Important-Before-You-Start-To- Program.html 因此,下一步对我来说是创建我自己的函数来模仿,使用ReadFile()和StrChr()。 – 2010-09-01 03:09:20

+0

apitalk.com链接已死亡... [This one](http://support.microsoft.com/kb/99456)不是,它证实了您的结论。 – WinWin 2012-01-17 21:02:52