首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IntToStr函数在C++Builder 6和C++Builder西雅图之间有什么区别?

IntToStr函数在C++Builder 6和C++Builder西雅图之间有什么区别?
EN

Stack Overflow用户
提问于 2015-11-05 11:32:19
回答 3查看 1.8K关注 0票数 2

我可以在C++Builder 6中成功地编译下面的代码片段,但无法在RADStudio西雅图中编译它:

代码语言:javascript
复制
  unsigned long x = 50;
  String s = IntToStr(x);

错误单位:c(55):“(x86)\embarcadero\studio\17.0\include\windows\rtl\System.SysUtils.hpp:3182‘系统::Sysutils::IntToStr(Int) at c:\program (x86)\embarcadero\studio\17.0\include\windows\rtl\System.SysUtils.hpp:3183’和_fastcall System:Sysutils::IntToStr(__int64)”在c:\program (x86)\embarcadero\studio\17.0\include\windows\rtl\System.SysUtils.hpp:3183‘处的E2015歧义

我检查了IntToStr的定义。

C++Builder 6:

代码语言:javascript
复制
extern PACKAGE AnsiString __fastcall IntToStr(int Value)/* overload */;
extern PACKAGE AnsiString __fastcall IntToStr(__int64 Value)/* overload */;

C++Builder西雅图:

代码语言:javascript
复制
extern DELPHI_PACKAGE System::UnicodeString __fastcall IntToStr(int Value)/* overload */;
extern DELPHI_PACKAGE System::UnicodeString __fastcall IntToStr(__int64 Value)/* overload */;
extern DELPHI_PACKAGE System::UnicodeString __fastcall UIntToStr(unsigned Value)/* overload */;
extern DELPHI_PACKAGE System::UnicodeString __fastcall UIntToStr(unsigned __int64 Value)/* overload */;

C++Builder 6和C++ Builder西雅图有什么区别?

EN

回答 3

Stack Overflow用户

发布于 2015-11-05 11:37:18

在这个场景中,基本上存在一个歧义,这意味着有两个IntToStr重载,需要不同的参数类型(intint64)。含糊不清的是将提供的类型降级为int或将其升级到int64。这里的参数应该是对大多数匹配类型的强制转换的

票数 3
EN

Stack Overflow用户

发布于 2015-11-05 11:55:40

除了@Ali Kazmi所说的,对于未签名的用户,您需要使用最后两个中的一个,因为您的值是未签名的:

代码语言:javascript
复制
UIntToStr()

那么,我认为它将不需要您转换值,它应该编译。

Builder6隐式地将无符号值转换为一种有符号类型,新构建器(自2010年起)默认情况下不会这样做,您需要显式地将其转换为有符号类型或使用无符号替代方案

票数 2
EN

Stack Overflow用户

发布于 2016-11-26 17:38:26

只需使用强大的UnicodeString类本身的重载构造函数之一,就可以降低为每个变量类型找到正确的转换函数的复杂性(就像在Delphi中必须做的那样),例如:

代码语言:javascript
复制
unsigned long x = 50;
String s(x);

此外,您可以在代码中的任何地方编写String(MyVariableName),以获得MyVariableName的UnicodeString表示。

在较早的CBuilder版本中,String是AnsiString的typedef。现在,它是UnicodeString的一个类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33543482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档