CString
khá tiện dụng, trong khi std::string
tương thích hơn với vùng chứa STL. Tôi đang sử dụng hash_map
. Tuy nhiên, hash_map
không hỗ trợ CString
làm khóa, vì vậy tôi muốn chuyển đổi CString
thành std::string
.Làm thế nào để chuyển đổi CString và :: std :: string :: std :: wstring với nhau?
Viết hàm CString
có vẻ mất nhiều thời gian.
CString -----> std::string
Tôi làm cách nào để thực hiện việc này?
std::string -----> CString:
inline CString toCString(std::string const& str)
{
return CString(str.c_str());
}
Tôi có đúng không?
EDIT:
Dưới đây là câu hỏi:
Làm thế nào tôi có thể chuyển đổi wstring
, CString
với nhau?
//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring.
CString src;
::std::wstring des(src.GetString());
Có mọi sự cố không?
Làm cách nào để chuyển đổi std::wstring
, std::string
cho nhau?
Tôi sẽ không làm điều này ... Sử dụng hai loại dây khác nhau là đủ xấu, nhưng phải chuyển đổi mỗi khi bạn làm điều gì đó với bản đồ? Nghe thật khủng khiếp. Chỉ cần nhất quán và sử dụng std :: string. Nếu vì một lý do nào đó bạn thực sự nghĩ rằng CString là tốt hơn, sau đó xác định hàm băm cho nó để hash_map của bạn có thể sử dụng nó, điều này tốt hơn gấp đôi sự khó hiểu trong mã của bạn. – GManNickG
Trên thực tế, Nếu tất cả các mã được viết bởi bản thân mình, nó sẽ nhất quán, nhưng có một số dự án mở rộng như sqlite tự do được sử dụng. Tôi không thể sửa đổi mã đó. – user25749