PDA

View Full Version : سوال: کار با رشته ها در MFC



zahmatkesh8519
دوشنبه 01 اسفند 1390, 10:14 صبح
چند تا سوال دارم ، اول اینکه چطور می شه چند تا رشته از نوع CString رو با هم جمع کرد ؟
اگر از نوع LPTSRT باشه چطور ؟ ( در برخی زبان ها به راحتی می شد با + جمع کرد )

چطوری Dword رو می تونم به رشته تبدیل کنیم ؟

برای چاپ مقدارها و دیدن خرجی از این روش استفاده می کنم ، آیا راه مناسب تری هم هست ؟

m_ListBox .InsertString(m_Listbox_current_Row++,_T ("ddd" ) );

ASGGSA
شنبه 06 اسفند 1390, 00:21 صبح
چند تا سوال دارم ، اول اینکه چطور می شه چند تا رشته از نوع CString رو با هم جمع کرد ؟
اگر از نوع LPTSRT باشه چطور ؟ ( در برخی زبان ها به راحتی می شد با + جمع کرد )

چطوری Dword رو می تونم به رشته تبدیل کنیم ؟

برای چاپ مقدارها و دیدن خرجی از این روش استفاده می کنم ، آیا راه مناسب تری هم هست ؟

m_ListBox .InsertString(m_Listbox_current_Row++,_T ("ddd" ) );

سلام.
در مثال زیر می توانید چند CString را با هم جمع و DWORD را به رشته تبدیل کنید. همینطور برای چاپ مقدارها و دیدن خروجی می توانید از تابع MessageBox استفاده کنید.


CString S1, S2;
S1.SetString(_T("Ali"));
S2.SetString(_T("Reza"));
MessageBox(S1+S2,(CString)("مجموع"), MB_YESNO);
DWORD A = 1000;
char C[10];
_itoa(A, C, 10);
MessageBox((CString)C, (CString)("خروجی"), MB_ICONSTOP);

zahmatkesh8519
شنبه 06 اسفند 1390, 14:30 عصر
دستت درد نکنه داداش ممنونم .
یه کلاسی هست که LPSTR یا LPWSTR رو به رشته تبدیل کنه . با همه نوع رو به نوع های دیگه تبدیل کنه . یکی از نت گرفتن ولی خیلی کمه
بعد یه سوال دیگه :
برای اینکه بگیم یه آرایه کاراکتری نا زمانی که به انتهاش نرسیده متنش رو بده به یه CString خب این رو چطور می شه داد به طوری که اگر مقادیر آرایه مقدار های مختلف داده در رجیستری باشن(هر مقداری باشه مثل DWORD , QWORD , REG_EXPAND_SZ ,REG_BINARY,REG_LINK, REG_MULTI_SZ و... )مشکلی پیش نیاد ؟

ASGGSA
شنبه 06 اسفند 1390, 19:53 عصر
سلام.
در مثال زیر متونید LPWSTR رو به آرایه ای از رشته ها تبدیل کنید.


WCHAR C[10]; // or wchar_t C[10]
LPWSTR LP = _T("ABCD");
for(int i = 0; i < 10; i++)
C[i] = *(LP + i);
MessageBox((CString)(C),(CString)("LPWSTR"), MB_YESNO);

و در مثال زیر میتونید QWORD یا DWORD را به CString تبدیل کنید.


CString CS;
QWORD QW = 2012;
wchar_t WT[10], WT2;
int i = 0, j;
while(QW)
{
WT[i] = (int)(QW%10) + 48;
QW = QW / 10;
i++;
}
i--;
for(j = 0; j <= i / 2; j++)
{
WT2 = WT[j];
WT[j] = WT[i - j];
WT[i - j] = WT2;
}
WT[i + 1] = NULL;
CS.SetString(WT);
MessageBox(CS,(CString)("QWORD"), MB_YESNO);

pe32_64
دوشنبه 08 اسفند 1390, 15:52 عصر
برو تو msdn در مورد این کلاس CString یکم بخون!
مثلا در مورد متد Format از کلاس CString

zahmatkesh8519
چهارشنبه 10 اسفند 1390, 21:26 عصر
این کد ها هم برای تبدیلات بدرد بخورن :

CString cs;
BSTR bstr;
WCHAR wsz[81];
CComBSTR cbstr;
char sz[81];
TCHAR tsz[81];
basic_string bs;
_bstr_t _bstr;

USES_CONVERSION;

// Convert CString to various types
cs = "String1";
bstr = cs.AllocSysString(); // BSTR
_tcscpy(tsz, (LPCTSTR)cs); // LPCTSTR
strcpy(sz, T2A(tsz)); // ANSI string
wcscpy(wsz, bstr); // wide string
cbstr = bstr; // CComBSTR via
bs = sz; // STL string
_bstr = (LPCTSTR) cs; // _bstr_t via either
// operator=(const char*) or
// operator=(const wchar_t*)
// if _UNICODE is defined.
::SysFreeString(bstr);

// Convert BSTR to various types
bstr = ::SysAllocString(L"String2");
cs = bstr; // CString via its LPCWSTR ctor
wcscpy(wsz, bstr); // Unicode
cbstr = bstr; // CComBSTR via operator=(LPOLESTR)
strcpy(sz, W2A(bstr)); // ANSI string
bs = sz; // STL string operator=(const T*)
_tcscpy(tsz, W2T(bstr)); // LPTSTR
_bstr = bstr; // _bstr_t via operator=(const wchar_t*)
::SysFreeString(bstr);