截断一个 AnsiString

Truncate an AnsiString

我正在使用 C++ 生成器 Rad Studio。 AnsiString 的大小是~2^31 个字符。我该如何查看长度?

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

正如我在 reference 中看到的那样,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 << 312^31ull 表示我们使用 64 位数字,因为 int 对它来说太小了。

使用Delete删除多余的尾巴应该是这样的

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

ExportFileName.SetLength(1 << 10);

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