2010-10-06 101 views
1

如何創建文本文件?visual C++創建文本文件

CreateFile("1",    
       GENERIC_READ | GENERIC_WRITE, 
       0,      
       NULL,     
       CREATE_NEW,   
       FILE_FLAG_OVERLAPPED, 
       NULL); 

1> ------構建開始:項目:TEST2,配置:調試的Win32 ------ 1>測試2.cpp 1> C: \ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):error C2065:'GENERIC_READ':未聲明的標識符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):error C2065:'GENERIC_WRITE':未聲明的標識符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(128):錯誤C2065: 'NULL':未聲明的標識符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(129):error C2065:'CREATE_NEW':未聲明的標識符 1> c:\用戶\kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(130):error C2065:'FILE_FLAG_OVERLAPPED':未聲明的標識符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(131):error C2065:'NULL':未聲明的標識符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(125) C3861:'CreateFile':標識符未找到 ==========構建:0成功,1失敗,0最新,0跳過==========

+1

我想你需要包含CreateFile() - WinBase.h(包括Windows.h)的頭文件 - 從http://msdn.microsoft.com/en-us/library/aa363858%28VS.85% 29.aspx – Tim 2010-10-06 15:13:01

回答

2

包含Windows頭文件在你.h.cpp文件頂部如下:

#include <windows.h> 

這應該解決與未定義的符號,如GENERIC_WRITECreateFile的問題。正如另一張海報中提到的,您通常應該在.cpp文件中編寫代碼,並且只在頭文件中聲明常量或類,同時將方法實現放在.cpp文件中以及常規函數中。

一旦你越過這點與CreateFileW這些問題需要一些更多的解釋:

默認情況下,從Visual Studio模板生成Windows應用程序鏈接針對的Windows API的的Unicode(寬字符)版本,並有UNICODE定義的C/C++預處理器宏指示這一點。當定義了UNICODE時,預處理器將符號CreateFile定義爲展開爲實際基礎Windows函數名稱的名稱,其名稱爲CreateFileW,其中W後綴表示它是「寬字符」即Unicode函數。如果未定義UNICODE宏(可通過各種Visual Studio項目設置覆蓋該宏),則CreateFile將擴展爲CreateFileA符號,該符號是該函數的ANSI字符串版本(ANSI的A)的名稱。 99%的時間應該使用UNICODE的默認設置,因爲所有現代版本的Windows都在內部使用Unicode字符。

由於CreateFileW需要Unicode字符串參數需要傳遞L"1"(即一個寬字符串文字),或使用TEXT宏(例如TEXT("1"))的UNICODE編譯器開關是否被定義,這將產生對應於正確的字符串類型或不。

以下是關於TEXT的MSDN文章的鏈接:link

+0

不工作,我將它添加到.cpp文件 – asd 2010-10-06 15:18:46

+0

根據您的錯誤輸出,您將代碼放在頭文件中。在使用這些符號之前,您需要放置windows.h。通常你不要把代碼放在頭文件中。 (所有的模板廢話儘管) – Tim 2010-10-06 15:20:28

+0

當我將它添加到.h文件:'CreateFileW':不能將參數1從'const char [2]'轉換爲'LPCWSTR' 1>指向的類型是不相關的;轉換需要reinterpret_cast,C風格轉換或函數風格轉換 – asd 2010-10-06 15:20:53