0

我正在使用 C++ 构建器 Rad Studio。AnsiString 的大小约为 2^31 个字符。我应该如何检查长度?

if(ExportFileName.Length() > ??? )
  {
    ExportFileName. ???
  }
  m_ActionsHelper.LastPdfFile = ExportFileName;
4

1 回答 1

-1

正如我在参考资料中看到的那样, 的两个参数Delete都是int,最大值远低于2^31。看来你不需要这样的检查。

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

1ull << 31

二进制移位运算符以这样一种方式操作整数位,即所有位都在所需的方向上移动。例如,

Operation   Bits   Shifted bits 10-based
1 << 1    00000001   00000010      2
1 << 2    00000001   00000100      4
4 << 2    00000100   00010000      16

等等。1ull << 31也是如此2^31ull意味着我们使用 64 位数字,因为int它太小了。

要使用 Delete 删除多余的尾巴,它应该像

ExportFileName.Delete(1 << 10, ExportFileName.Length());

或者

ExportFileName.SetLength(1 << 10);

而且您可能不需要事先检查长度。只是DeleteSetLength。如果已经满足,则不会执行任何操作。

于 2018-05-02T12:18:24.713 回答