2010-09-01 85 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