SORU
3 Kasım 2008, PAZARTESİ


CString dönüştürmek için nasıl ::std::string ::std::wstring birbirine?

CString std::string STL konteynırı ile daha uyumlu olsa da oldukça kullanışlı. hash_map kullanıyorum. Ancak, hash_map destek anahtar CString değil, std::string CString dönüştürmek istiyorum.

CString karma bir fonksiyon yazmak çok zaman alacak gibi görünüyor.

CString -----> std::string

Bunu nasıl yapabilirim?

std::string -----> CString:

inline CString toCString(std::string const& str)
{
    return CString(str.c_str()); 
}

Haksız mıyım?


DÜZENLEME:

İşte bir soru daha

Nasıl birbirlerine wstring, CString dönüştürebilir miyim?

//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring. 
CString src;
::std::wstring des(src.GetString());

Yokherhangi birsorun?

Nasıl birbirlerine std::wstring, std::string dönüştürebilir miyim?

CEVAP
3 Kasım 2008, PAZARTESİ


50* *göre:

CString std::string:

CString cs("Hello");
std::string s((LPCTSTR)cs);

AMA:std::string LPCTSTR bir yapı olamaz. yani kod UNİCODE yapılar için başarısız olur.

std::string 27* / LPCSTR*VC 7 kullanan bir programcı sadece inşa edebilir.x ya da daha iyi bir aracı olarak CT2CA gibi dönüşüm sınıfları kullanabilir.

CString cs ("Hello");
// Convert a TCHAR string to a LPCSTR
CT2CA pszConvertedAnsiString (cs);
// construct a std::string using the LPCSTR input
std::string strStd (pszConvertedAnsiString);

std::string to CString: (Visual Studio's CString FAQs...)

std::string s("Hello");
CString cs(s.c_str());

CStringT veya geniş karakter karakter dizeleri inşa edebilir. yaniwchar_t* (LPWSTR) char* (yani LPSTR) veya dönüştürebilirsiniz.

Diğer bir deyişle, char-ihtisas (CStringT) yani CStringA, wchar_t-specilization CStringW TCHAR-uzmanlık CString olabilir inşa ya char veya geniş karakter,sonlandırıldı null (boş sonlandırma burada çok önemlidir)dize kaynakları.
IInspectable olarak adlandırılan ıslah "boş sonlandırma" bölümü in the comments:

NULL sonlandırma gerekmez.
CStringT açık uzunluğu argüman dönüşüm kurucular vardır. Bu da NUL karakterler gömülü std::string nesneleri CStringT nesneleri oluşturmak anlamına gelir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • martin shervington

    martin sherv

    7 EKİM 2011
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011