когда размер строки изменяется с > 16 на < 16, т.е. переходит через 16 портится вся строка
STLPort не помогает. Компилятор VisualStudio 2003, NET не использую.
Здравствуйте, ikamyn, Вы писали:
I>Как обойти баг
I>string str; I>str = "0123456789012345678"; I>str.erase(0, 5);
I>когда размер строки изменяется с > 16 на < 16, т.е. переходит через 16 портится вся строка I>STLPort не помогает. Компилятор VisualStudio 2003, NET не использую.
I>Заранее благодарен.
Здравствуйте, nap2k, Вы писали:
N>Здравствуйте, ikamyn, Вы писали:
I>>Как обойти баг
I>>string str; I>>str = "0123456789012345678"; I>>str.erase(0, 5);
I>>когда размер строки изменяется с > 16 на < 16, т.е. переходит через 16 портится вся строка I>>STLPort не помогает. Компилятор VisualStudio 2003, NET не использую.
I>>Заранее благодарен.
N>Это дебаггер бычится, на самом деле все работает.
Здравствуйте, ikamyn, Вы писали:
I>Как обойти баг
I>string str; I>str = "0123456789012345678"; I>str.erase(0, 5);
I>когда размер строки изменяется с > 16 на < 16, т.е. переходит через 16 портится вся строка I>STLPort не помогает. Компилятор VisualStudio 2003, NET не использую.
I>Заранее благодарен.
Вообще говоря, работая со строками приходится пользоваться иной раз переводом в char буфер,
обработкой в нём и обратноё преобразование.
Конечно это не самое изящное решение, но я бы реализовал ф-цию erase сам, по крайней мере попробовал бы
То что строка портиться при переходе через 16 может быть зависит от упаковки компилятором структур в памяти.
В VS++, как я понял структуры по умолчанию пакуются со смещением 8 байт, а мне однажды понадобилось создать структуру
размером 100 байт. Так вот пока я не указал компилятору смещение в 4 байта, моя структура имела размер кратный 8.