Усечь AnsiString

Я работаю с Rad Studio, C ++ Builder. Размер AnsiString составляет ~ 2 ^ 31 символов. Как я должен проверить длину?

if(ExportFileName.Length() > ??? )
{
ExportFileName. ???
}
m_ActionsHelper.LastPdfFile = ExportFileName;

0

Решение

Как я вижу это в ссылка, оба параметра 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, Если это уже удовлетворяет, никакие действия не будут выполнены.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector