簡體   English   中英

CString在MFC中編輯控件

[英]CString to Edit Control in MFC

所以我正在將數據從.txt文件檢索到myclass(類),包括

public:
vector<int> ID
vector<string> name
vector<string> add

但是,當我嘗試訪問它們以在MFC dlg的編輯框中顯示它們時,它將返回此框:

ID: 1
Name: (jibberish)
address: (jiberish)
ID: 2
Name: (jibberish)
address: (jiberish)
etc...

for循環中的編輯控制框中使用的代碼

int s1;    
CString s2, s3;
s1.Format(_T("\r\nID: %d"),myclass.ID[i]);
s2.Format(_T("\r\nName: %s"),myclass.name[i]);
s3.Format(_T("\r\nAddress: %s"),myclass.add[i]);
Edi_box += s1 + s2 + s3;

因此它讀取整數的向量,但不讀取字符串的向量

您不能(或至少不應)使用%s格式化std::string 嘗試這個:

s2.Format( _T("\r\nName: %s"), myclass.name[i].c_str() );

並對其他std::string變量同樣進行。

_T宏將創建一個wchar_t字符串或一個char字符串,具體取決於VS項目的字符集設置。 為了將std::string (基於字符)格式化為其中之一,您必須使用正確的轉換。 Microsoft提供了對“正常” printf()樣式語法的擴展,該擴展受許多功能支持:使用%ls插入wchar_t字符串,並使用%hs插入char字符串。

筆記:

  • 從wchar_t到char的轉換可能會失敗,因此除非那里的輸入已經受限,否則不要期望在那里得到高質量的結果。
  • 您不能通過省略號傳遞任何類類型的對象,因此您需要c_str()函數的C樣式,NUL終止的字符串。
  • 如果您有多個向量,其中每個元素對應於另一個元素,請使用帶有結構的單個向量,這樣可使您的代碼更加清晰。
  • 將行尾字符(“ \\ r \\ n”)放在末尾 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM