首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截断AnsiString

截断AnsiString
EN

Stack Overflow用户
提问于 2018-05-02 12:14:04
回答 1查看 255关注 0票数 0

我正在与c++构建器Rad一起工作。AnsiString大小的大小是~2^31个字符。我该怎么检查长度?

代码语言:javascript
复制
if(ExportFileName.Length() > ??? )
  {
    ExportFileName. ???
  }
  m_ActionsHelper.LastPdfFile = ExportFileName;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 12:18:24

正如我在参考文献中看到的那样,Delete的两个参数都是int,其最大值远低于2^31。看来你不需要这样的支票了。

无论如何,如果您想获得2的整数幂,可以使用二进制移位运算符:

代码语言:javascript
复制
1ull << 31

二进制移位操作符以这样的方式操作整数位,使所有位都按照所需的方向移动。例如,

代码语言:javascript
复制
Operation   Bits   Shifted bits 10-based
1 << 1    00000001   00000010      2
1 << 2    00000001   00000100      4
4 << 2    00000100   00010000      16

诸若此类。所以1ull << 312^31ull意味着我们使用64位数,因为int太小了.

若要使用delete删除剩余尾,应该如下所示

代码语言:javascript
复制
ExportFileName.Delete(1 << 10, ExportFileName.Length());

代码语言:javascript
复制
ExportFileName.SetLength(1 << 10);

也许你不需要事先检查长度。只有DeleteSetLength。如果它已经满足,就不会执行任何操作。

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

https://stackoverflow.com/questions/50134421

复制
相关文章

相似问题

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