在 xrad studio 中将 unicodestring 转换为字符串

convert unicodestring to string in xrad studio

我在 "Rad Studio 10 Seattle" 中遇到问题,我试图从 TEdit 对象获取文本输入,但我收到一条错误消息

E2034 Cannot convert 'UnicodeString' to 'string'

我的代码如下:

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

这个函数 addDog 需要 (string, int, string, string)
当我尝试使用 edName->TextTEdit 对象发送文本时,我收到了前面提到的错误消息。

我的问题如下,我可以将 edName 从 unicodestring 转换为字符串,还是必须更改参数列表的数据类型?如果可以,我该怎么做?
我一直在搜索这个问题,但没有找到任何与我的问题类似的东西。

您需要先将 UnicodeString 数据转换为 Ansi,然后再将其传递。最简单的方法是先把UnicodeString赋值给一个AnsiString(或导数),然后用它的c_str()方法得到一个char*指针,std::string 将接受:

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

如果可能,也许可以考虑重写你的 shopVar class 以使用 std::wstring,然后你可以删除 Ansi 转换:

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