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

注意: Visual C++.NET 或 Visual C++ 2005年偵錯工具無法 std::string 和 std::wstring 變數正確顯示

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

按一下這裡查看此文章的英文版本:326616
徵狀
偵錯工具可能不會顯示適當的下列字串值:
  • std::string 變數,如果字串的長度大於 15 個字元。
  • std::wstring 變數,如果字串的長度是少於 15 個字元。
發生的原因
std::string 或 std::wstring 變數儲存為靜態緩衝區,如果長度是少於 15 個字元。如果字串的長度大於 15 個字元,字串會儲存為記憶體的指標。

您可以修改 Autoexp.dat 檔案,來控制 std::string 變數的偵錯工具顯示。_Bx._Buf 成員用來指定 std::string 儲存為靜態緩衝區。_Bx._Ptr 成員用來指定該 std::string 儲存為記憶體的指標。若未指定 std::string autoexp.dat 檔案中的 _Bx._Ptr 成員,偵錯工具並不會顯示具有長度超過 15 個字元的 std::string 變數。若未指定 std::wstring autoexp.dat 檔案中的 _Bx._Buf 成員,偵錯工具並不會顯示有長度少於 15 個字元的 std::wstring 變數。
解決方案
顯示變數值的偵錯工具元件即為 [運算式評估工具] (EE)。EE 的一個執行個體處理原生程式碼,以及其他執行個體處理 Managed 程式碼。Autoexp.dat 檔案提供自訂的原生 EE,並 Mcee_mc.dat 檔案提供自訂的受管理的 EE。若要解決這個問題,修改 [Autoexp.dat 檔案。

若要修改 Autoexp.dat 檔案,請依照下列步驟執行:
  1. 開啟記事本或任何其他文字編輯器。
  2. 從 c:\Program Files\Microsoft Visual Studio.NET\Common7\Packages\Debugger 資料夾開啟 Autoexp.dat 檔案。
  3. Autoexp.dat] 檔案中找出下列幾行:
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=<_Bx._Buf>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=<_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Ptr>
  4. 取代您在步驟 3 有下列的行中找到的行:
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=_Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=_Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Buf> _Ptr= <_Bx._Ptr>
狀況說明
Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的問題。
其他相關資訊

重製行為的步驟

  1. 建立新的 Visual C++ Win32 專案:
    1. 按一下 [檔案] 功能表 新增]
    2. 在 [專案類型 下, 按一下 [Visual C++ 專案,然後按一下 [Win32 專案 中的 [範本]。

      附註在 Visual 的 Studio 2005 中 Visual C++ 專案 變更為 Visual C++]。
    3. 為專案的名稱 LongStringDemo
    4. Win32 應用程式精靈 中按一下 [應用程式設定,] 然後選取 [為 主控台應用程式 的 [應用程式類型
    5. 在 [其他選項,按一下以選取 [空專案] 核取方塊,然後按一下 [完成]
  2. 方案總管]原始程式檔,] 上按一下滑鼠右鍵,然後按一下 [加入新的 C + + 檔案
  3. 命名檔案 LongStringDemo.cpp
  4. 將下列程式碼加入至 LongStringDemo.cpp file:
    #include <string>using namespace std;void main(){	//Ansi String	string szAnsiString;	szAnsiString = "c:\\Program Files\\Microsoft Visual Studio .Net";	//Wide Char String	wstring wszWCharString;	wszWCharString = L"c:\\Program Files\\Microsoft Visual Studio .Net";}
  5. 在 [建置] 功能表上按一下 建置方案
  6. 偵錯] 功能表上按一下 [逐步執行 (F11),並啟動偵錯]。
  7. 偵錯] 功能表上指向 [視窗],指向 [監看式,然後再按一下 [watch1
  8. 將 szAnsiString 變數和 wszWCharString 變數新增到 [監看式] 視窗。您也可以藉由指向 szAnsiString 或 wszWCharString 變數監看值。
  9. 在 [監看式] 視窗確認 szAnsiString 或 wszWCharString 變數的值。
注意事項
本文已封存。本文係以「現狀」提供且不會再更新。

警告:本文為自動翻譯

內容

文章識別碼:326616 - 最後檢閱時間:01/17/2015 05:51:44 - 修訂: 2.0

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

  • kbnosurvey kbarchive kbmt kbdebug kbbug KB326616 KbMtzh
意見反應