Я работаю с Rad Studio, C ++ Builder. Размер 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
, Если это уже удовлетворяет, никакие действия не будут выполнены.
Других решений пока нет …