2016-01-07 38 views
0

我在那裏,我想從一個TEdit對象文本輸入「RAD Studio在西雅圖10個」問題,我得到一個errormessage的說法轉換的UnicodeString爲字符串xrad工作室

E2034無法將「的UnicodeString '到 '字符串'

我的代碼如下:

this->shopVar->addDog(edName->Text, StrToInt(edAge->Text), "male", "dogspecial"); 

此功能addDog需要(string, int, string, string)
當我嘗試發送來自TEdit對象的文本與edName->Text時,我收到前面提到的錯誤消息。

我的問題如下,我可以在edName從unicodestring轉換爲字符串還是必須更改我的參數列表的數據類型?如果是這樣,我該怎麼做?
我一直在尋找這個問題,但沒有發現任何類似於我的問題。

+0

*我一直在尋找這個問題,但沒有發現任何類似我的問題。 * - ???在字符串類型之間轉換是一個經常被問到的問題。也許不是C++ Builder的字符串類型,但是字符串類型(Unicode到char-based,基於char的到Unicode,基於char的到寬字符,LPCSTR,LPCTSTR等等)。你的Builder字符串類型「UnicodeString」可能只是他們說「Unicode」這個詞的方式。 – PaulMcKenzie

回答

0

您需要先將UnicodeString數據轉換爲Ansi,然後通過。最簡單的方法就是分配UnicodeStringAnsiString(或衍生物),然後再利用其c_str()方法得到一個char*指針,這std::string將接受:

this->shopVar->addDog(AnsiString(edName->Text).c_str(), ...); 

如果可能的話,也許考慮重寫你的shopVar類使用std::wstring代替,那麼你就可以刪除了ANSI轉換:

this->shopVar->addDog(edName->Text.c_str(), StrToInt(edAge->Text), L"male", L"dogspecial"); 
+0

非常感謝!它工作完美! :) – Flirre