Dan*_*ker 1 c++ string c++builder
我最近开始研究使用C++ Builder(Borland)构建的旧解决方案.
我遇到了允许一些意外操作的代码.
1)将int赋值给String而不进行转换:
String x = 12; //this works... I would expect a type mismatch..
Run Code Online (Sandbox Code Playgroud)
2)String与int的比较没有问题:
String s = "12";
int x = 12;
bool b = s == x; // Again... I expect an error..
Run Code Online (Sandbox Code Playgroud)
C++ Builder是否进行了一些自动转换?对于C++ Builder,是否有"OMG我不能相信他们这样做"的列表?
这是Borland C++ Builder String(不是std::string标准C++).
这样做可以让你创建几乎所有类型的字符串,正如Borland C++ Builder Strings引用所提到的:
AnsiString类提供了许多构造函数,允许您创建任何类型的字符串.例如,您可以使用它来声明:
整数:
Run Code Online (Sandbox Code Playgroud)AnsiString Int = 120;
正如RemyLebeau所说:请注意,这String不是实际类型,它是AnsiString(C++ Builder 2007及更早版本)或UnicodeString(C++ Builder 2009及更高版本)的别名.两者都实现了数值类型的隐式转换.