2012-09-27 15 views
8

Tôi có biến CString mà tôi cần chuyển đổi sang LPCTSTR (const char *) .Tôi cần chuyển đổi này để tôi có thể sử dụng nó làm đối số trong hàm.CString để chuyển đổi LPCTSTR

Các CString nhìn như:

CString sqlTemp = _T("INSERT INTO "+ sw1 +" (filename, "+ sw2 +") VALUE ("+ sw7 +","+ sw3 +") "); 

Nó chứa một truy vấn. Nguyên mẫu của hàm là:

int WriteBlob(LPCTSTR szSqlStat, LPCTSTR szFilePath) 

Vì vậy, bạn có thể chỉ cho tôi một ví dụ về cách chuyển đổi sang LPCTSTR? Nó có thể là tầm thường nhưng tôi là một người mới bắt đầu C++ và tôi vẫn nhận được một hang của nó.

Cảm ơn.

+0

hãy thử này (LPCTSTR) (LPTSTR) sqlTemp để WriteBlog chức năng – Riskhan

Trả lời

11

Một phương pháp chuyển đổi là như thế này:

CString str; 

str = "Hello"; 

LPCSTR szTemp = (LPCSTR)(LPCTSTR)str; 
+1

Bạn có thể cũng giải thích vì sao có rất nhiều định dạng khác nhau (LPCTSTR, CString, char *, string, etc ...) mà về cơ bản là giống nhau? Hay có sự khác biệt nào mà tôi không thể thấy? – SinisterMJ

+3

chuỗi bị rơi là một đối tượng để bạn có thể gọi các phương thức trên nó không giống như tất cả các đối tượng khác. char * về cơ bản là một mảng các ký tự. Cstring cũng là một mảng ký tự nhưng chúng có thể mất 2 byte tùy thuộc vào mã hóa. LPCTSTR là một con trỏ đến một chuỗi không đổi, vì vậy bạn không thể sửa đổi nó. –

+0

"Cstring cũng là một mảng các ký tự" không, nó không phải. –

0
CString str; // the given string 
CStringA strA(str); // a helper string 
LPCSTR ptr = strA; 

Reference MSDN