我正在与c++构建器Rad一起工作。AnsiString大小的大小是~2^31个字符。我该怎么检查长度?
if(ExportFileName.Length() > ??? )
{
ExportFileName. ???
}
m_ActionsHelper.LastPdfFile = ExportFileName;发布于 2018-05-02 12:18:24
正如我在参考文献中看到的那样,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。如果它已经满足,就不会执行任何操作。
https://stackoverflow.com/questions/50134421
复制相似问题