Усечь AnsiString
Я работаю с Rad Studio, C++ Builder. Размер AnsiString составляет ~2^31 символов. Как я должен проверить длину?
if(ExportFileName.Length() > ??? )
{
ExportFileName. ???
}
m_ActionsHelper.LastPdfFile = ExportFileName;
1 ответ
Как я вижу в ссылке, оба параметра 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
, Если это уже удовлетворяет, никакие действия не будут выполнены.