只需要设置lbl.caption(在一个循环中),但问题比我想象的要大。我甚至尝试了wstring的向量,但没有这样的事情。我读了一些页面,尝试了一些函数,如WideString(),UnicodeString(),我知道我不能也不应该在C++ Builder 2010中关闭Unicode。
std::vector <std::string> myStringVec(20, "");
myStringVec.at(0) = "SomeText";
std::string s = "something";
// this works ..
Form2->lblTxtPytanie1->Caption = "someSimpleText";
// both lines gives the same err
Form2->lblTxtPytanie1->Caption = myStringVec.at(0);
Form2->lblTxtPytanie1->Caption = s;
错误:[BCC32错误]我的文件. cpp(129):E2034无法将"标准字符串"转换为"Unicode字符串"
它现在吃了我几个小时了。有没有什么"又快又脏"的解决办法?它只需要工作...
- 更新**
解决了。我混合了STL/VCL字符串类。谢谢你TommyA。
1条答案
按热度按时间cqoc49vn1#
问题是你把standard template library string class和VCL string class混在一起了。caption属性需要的是VCL字符串,它具有STL字符串的所有功能。
这个例子实际上是传递(
const char*
),这很好,因为在VCLUnicodeString
类构造函数中有一个用于此的构造函数,但是没有用于从STL字符串复制的构造函数。你可以做两件事中的一件,你可以在你的向量中使用一个VCL字符串类而不是STL类,这样:
变成:
在这种情况下,下面两行也可以工作。或者,您可以从STL字符串中检索实际的空终止字符指针,并将其传递给标题,此时它将被转换为一个VCL String类,如下所示:
您喜欢哪种解决方案取决于您自己,但是除非您对STL字符串类有特定的需求,否则我强烈建议您使用VCL字符串类(如我在第一个示例中所示)。