Работя с API на ниско ниво, който приема char*
и числова стойност за представяне на низ и съответно неговата дължина. Моят код използва std::basic_string
и извиква тези методи с подходящия превод. За съжаление, много от тези методи приемат дължини на низове с различен размер (т.е. max(unsigned char
), max(short
) и т.н...) и аз съм заседнал да пиша код, за да се уверя, че моите екземпляри на низове не надвишават предписаната максимална дължина чрез API на ниско ниво.
По подразбиране максималната дължина на екземпляр std::basic_string
е ограничена от максималната стойност на size_t
(или max(unsigned int
), или max(__int64
)). Има ли начин да манипулирам характеристиките и реализациите на разпределителя на std::basic_string
имплементация, така че да мога да посоча моя собствен тип, който да използвам вместо size_t
? По този начин се надявам да се възползвам от всички съществуващи проверки на границите в изпълнението на std::basic_string
, така че да не се налага да го правя, когато извършвам превода.
Първоначалното ми проучване предполага, че това не е възможно без да напиша собствен клас низове, но се надявам, че съм пропуснал нещо :)