您目前已離線,請等候您的網際網路重新連線

如何從讀取和寫入至文字檔使用 Visual C++.NET 或 Visual C++ 2005

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:816148
本文章的有 Microsoft Visual C#.NET] 版本請參閱 816149

本文章的有 Microsoft Visual Basic.NET] 版本請參閱 315828

在此工作

結論
本文將逐步告訴您,如何從讀取和寫入至文字檔使用 Visual C++.NET 或 Visual C++ 2005年。

back to the top

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構和您必須擁有 Service Pack:
  • Microsoft Visual C++.NET 或 Microsoft Visual C++ 2005
本文假設您已熟悉下列主題:
  • Microsoft Visual C++.NET 或 Visual C++ 2005
back to the top

讀取及寫入文字檔

Write a Text File (Example 1) 和 「 Write a Text File (Example 2) 章節會說明如何使用 StreamWriter 類別來寫入檔案的文字。Read a Text File > 一節說明如何使用 StreamReader 類別讀取文字檔案。

back to the top

寫入文字檔 (範例 1)

下列程式碼使用 StreamWriter 類別,開啟、 寫入,並關閉文字檔案。至 StreamReader 類別類似的方式,您可以將文字檔案的路徑名稱傳遞至 StreamWriter 建構函式,以自動開啟該檔案。WriteLine 方法會將完整一行文字寫入至文字檔案。
  1. 啟動 Visual Studio.NET 或 Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample1,],然後再按一下 [確定]]。
  5. 開啟 Sample1.cpp 檔案。加入下列程式碼:
    using namespace System::IO;
  6. Main 函式的現有的程式碼取代下列程式碼:
        try     {	    //Pass the file path and file name to the StreamWriter Constructor.	    StreamWriter* sw = new StreamWriter(S"C:\\Test.txt");	    //Write a line of text.	    sw->WriteLine(S"Hello World!!");	    //Write a second line of text.	    sw->WriteLine("From the StreamWriter class");	    //Close the file.	    sw->Close();    }    catch(Exception* e)    {        Console::WriteLine("Exception: {0}",e->Message);    }    __finally     {        Console::WriteLine("Executing finally block.");    }	    return 0;
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。這個程式碼會建立名 Test.txt 為磁碟機 C.開啟 Test.txt 檔案在文字編輯器如 「 記事本 」 中的檔案。將 Test.txt 檔案包含下列兩行文字:
    Hello World!!From the StreamWriter class
back to the top

寫入文字檔 (範例 2)

下列程式碼使用 StreamWriter 類別,開啟、 寫入,並關閉文字檔案。與前一個範例不同的是這段程式碼會將兩個額外的參數傳遞到建構函式。第一個參數是檔案路徑和檔案的檔案名稱。第二個參數中,True,指定開啟檔案中附加模式。如果您指定 為 False 給第二個參數,檔案的內容會覆寫每次執行程式碼。第三個參數指定 Unicode。因此,StreamWriter 類別將編碼 Unicode 格式檔案。您也可以指定下列的編碼方式為第三個參數:
  • ASC11
  • Unicode
  • UTF7
  • UTF8
只不過 Write 方法並不會自動內嵌換行或換行 (CR/LF) 字元組合,Write 方法很類似 WriteLine] 方法。您想要一次書寫一個字元時,這非常有用。
  1. 啟動 Visual Studio.NET 或 Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample3,],然後再按一下 [確定]]。
  5. 開啟 Sample3.cpp 檔案。加入下列程式碼:
    using namespace System::IO;using namespace System::Text;
  6. Main 函式的現有的程式碼取代下列程式碼:
        Int64 x;    try     {	    //Open the File.        StreamWriter* sw = new StreamWriter(S"C:\\Test1.txt", true, Encoding::ASCII);	    //Write out the numbers 0 to 9 on the same line.	    for(x=0; x < 10; x++)	    {		    sw->Write(x);	    }	    //Close the file.	    sw->Close();    }    catch(Exception* e)    {        Console::WriteLine(S"Exception: {0}", e->Message);    }    __finally     {        Console::WriteLine(S"Executing finally block.");    }	    return 0;
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。這個程式碼會建立名 Test1.txt 為磁碟機 C.開啟 Test1.txt 檔案在文字編輯器如 「 記事本 」 中的檔案。Test1.txt 檔案包含下列單行文字:
    0123456789
back to the top

讀取文字檔案

下列程式碼使用 StreamReader 類別,開啟、 讀取,並關閉文字檔案。您可以將文字檔案的路徑名稱傳遞給 StreamReader 建構函式,會自動開啟該檔案。ReadLine 方法會讀取每一行文字,並再讀取時,遞增檔案指標到下一行。當 ReadLine 方法達到檔案結尾時,它會傳回 null 參考。
  1. 啟動 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. Visual 的 Studio.NET 2002年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [受管理的 C + + 應用程式

    Visual 的 Studio.NET 2003年中按一下 [專案類型 下的 [Visual C++ 專案,然後再按一下 [範本] 下方的 [主控台應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [CLR 主控台應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Sample2,],然後再按一下 [確定]]。
  5. 開啟 Sample2.cpp 檔案。加入下列程式碼:
    using namespace System::IO;
  6. 主要的函式的現有的程式碼取代下列程式碼:
        String* line;    try         {	        //Pass the file path and file name to the StreamReader constructor.	        StreamReader* sr = new StreamReader(S"C:\\test1.txt");	        //Read the first line of text.	        line = sr->ReadLine();	        //Continue to read until you reach end of file.	        while (line != NULL) 	        {		        //Write the lie to console window.                Console::WriteLine(line);		        //Read the next line.                line = sr->ReadLine();	        }	        //Close the file.	        sr->Close();            Console::ReadLine();        }        catch(Exception* e)        {            Console::WriteLine(S"Exception: {0}",e->Message);        }        __finally         {            Console::WriteLine(S"Executing finally block.");        }        return 0;
  7. 在 [偵錯] 功能表上按一下 [[開始],以編譯並執行應用程式]。按 ENTER 鍵來關閉主控台視窗。[主控台] 視窗會顯示 Test1.txt 檔案的內容。
back to the top

完成程式碼清單

寫入文字檔 (版本 1)

#include <tchar.h>#using <mscorlib.dll>using namespace System;using namespace System::IO;int _tmain(){    try     {	    //Pass the file path and file name to the StreamWriter Constructor.	    StreamWriter* sw = new StreamWriter(S"C:\\Test.txt");	    //Write a line of text.	    sw->WriteLine(S"Hello World!!");	    //Write a second line of text.	    sw->WriteLine("From the StreamWriter class");	    //Close the file	    sw->Close();    }    catch(Exception* e)    {        Console::WriteLine("Exception: {0}",e->Message);    }    __finally     {        Console::WriteLine("Executing finally block.");    }	    return 0;}
附註您必須加入通用語言執行階段支援編譯器選項 (/ clr:oldSyntax) 來順利編譯先前的程式碼範例的 Visual C++ 2005年中。 若要在 Visual C++ 2005年中加入常用的語言執行階段支援編譯器選項,請依照下列步驟執行:
  1. 按一下 [專案,] 然後按一下 [<ProjectName> 屬性

    附註<ProjectName> 是專案的名稱的預留位置。
  2. 展開 [組態屬性,] 然後按一下 [一般
  3. 按一下以選取 通用語言執行階段支援、 舊語法 (/ clr:oldSyntax)通用語言執行階段支援 的專案設定中在右窗格中,按一下 套用,],然後再按一下 [確定]
如需有關通用語言執行階段支援編譯器選項,請造訪下列 Microsoft 網站:
/ clr (通用語言執行階段編譯)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

寫入文字檔 (版本 2)

#include <tchar.h>#using <mscorlib.dll>using namespace System;using namespace System::IO;using namespace System::Text;int _tmain(){    Int64 x;    try     {	    //Open the File.        StreamWriter* sw = new StreamWriter(S"C:\\Test1.txt", true, Encoding::ASCII);	    //Write out the numbers 0 to 9 on the same line.	    for(x=0; x < 10; x++)	    {		    sw->Write(x);	    }	    //Close the file.	    sw->Close();    }    catch(Exception* e)    {        Console::WriteLine(S"Exception: {0}", e->Message);    }    __finally     {        Console::WriteLine(S"Executing finally block.");    }	    return 0;}

讀取文字檔案

#include <tchar.h>#using <mscorlib.dll>using namespace System;using namespace System::IO;int _tmain(){    String* line;    try         {	        //Pass the file path and file name to the StreamReader constructor.	        StreamReader* sr = new StreamReader(S"C:\\test.txt");	        //Read the first line of text.	        line = sr->ReadLine();	        //Continue to read until you reach end of file.	        while (line != NULL) 	        {		        //Write the lie to console window.                Console::WriteLine(line);		        //Read the next line.                line = sr->ReadLine();	        }	        //Close the file.	        sr->Close();            Console::ReadLine();        }        catch(Exception* e)        {            Console::WriteLine(S"Exception: {0}",e->Message);        }        __finally         {            Console::WriteLine(S"Executing finally block.");        }        return 0;}
back to the top

疑難排解

對於所有的檔案操作是良好的程式設計作法來包裝程式碼來處理錯誤和例外狀況在 try-catch-__finally 區塊內。特別,您可以使檔案鎖定無限期地釋放最後一個區塊中檔案的控制代碼。一些可能的錯誤包括不存在的檔案或檔案已在使用中。

back to the top
参考
如需有關 StreamReaderStreamWriter 類別的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
back to the top

警告:本文為自動翻譯

內容

文章識別碼:816148 - 最後檢閱時間:11/22/2007 08:17:35 - 修訂: 3.5

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbmt kbsample kbcode kbfileio kbhowtomaster KB816148 KbMtzh
意見反應
ute = "76500"; var Ctrl = ""; document.write("