我正在使用 C++ 构建器 Rad Studio。AnsiString 的大小约为 2^31 个字符。我应该如何检查长度?
if(ExportFileName.Length() > ??? )
{
ExportFileName. ???
}
m_ActionsHelper.LastPdfFile = ExportFileName;
我正在使用 C++ 构建器 Rad Studio。AnsiString 的大小约为 2^31 个字符。我应该如何检查长度?
if(ExportFileName.Length() > ??? )
{
ExportFileName. ???
}
m_ActionsHelper.LastPdfFile = ExportFileName;
正如我在参考资料中看到的那样, 的两个参数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^31
。ull
意味着我们使用 64 位数字,因为int
它太小了。
要使用 Delete 删除多余的尾巴,它应该像
ExportFileName.Delete(1 << 10, ExportFileName.Length());
或者
ExportFileName.SetLength(1 << 10);
而且您可能不需要事先检查长度。只是Delete
或SetLength
。如果已经满足,则不会执行任何操作。