截断一个 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 << 31
是 2^31
。 ull
表示我们使用 64 位数字,因为 int
对它来说太小了。
使用Delete删除多余的尾巴应该是这样的
ExportFileName.Delete(1 << 10, ExportFileName.Length());
或
ExportFileName.SetLength(1 << 10);
并且您可能不需要事先检查长度。只是 Delete
或 SetLength
。如果已经满足,则不执行任何操作。
我正在使用 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 << 31
是 2^31
。 ull
表示我们使用 64 位数字,因为 int
对它来说太小了。
使用Delete删除多余的尾巴应该是这样的
ExportFileName.Delete(1 << 10, ExportFileName.Length());
或
ExportFileName.SetLength(1 << 10);
并且您可能不需要事先检查长度。只是 Delete
或 SetLength
。如果已经满足,则不执行任何操作。