Здравствуйте, loknalori, Вы писали:
L>P.S. Предложения использовать вектора etc не катят т.к. смысл преливать с одного контенера в другой. Т.е. задача сделать ЭТО с минимумом посредников.
std::string пока не обязан хранить строку подряд в памяти... Так то, что ты хочешь недостижимо.
Мало того, в STL-way это ещё и не нужно. Почему тебе так надо хранить строку в std::string, а не в std::vector?
Нарисуй простенький классец вокруг std::vector, который возвращает итератор на начало и на конец без одного (зарад концевого нуля), или воспользуйся диапазоном из Boost. И эту штуку можно будет передавать в разнообразные алгоритмы stl, так что можно и не в строчке данные держать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, loknalori, Вы писали:
L>Здравствуйте, Erop, Вы писали:
L>:-D Ну я, в общем, в курсе как можно еще сделать :-D Вопрос в общем сугубо академический... Хотелось именно ТАК
Сугубо академически: именно так — нет, нельзя.
Если хочется ответа на другой конкретный вопрос, то его, другой конкретный вопрос, нужно и задавать. А так получается "доктор, у меня что-то болит..." (с).
PS. В общем случае, нет, нельзя.
L>Хочется написать что-то типа L>
L>Т.е. есть строковый контейнер, оборачиваем в инсертер, и ЭТО передаем в crt ф-ии копирования.
L>Есть стандартные варианты решения вопроса?
Не совсем понял что нужно получить, но для того чтобы реализовать взаимодействие сишных функций со стандартными контейнерами можно использовать std::vector, например так:
Здравствуйте, serg_joker, Вы писали:
_>Если хочется ответа на другой конкретный вопрос, то его, другой конкретный вопрос, нужно и задавать. А так получается "доктор, у меня что-то болит..." (с).
Куда конкретней-то? Ну, ок, переформулирую. Есть некая ф-я, работающая с указателями на ANSI строки (а именно, производящая запись в эту уже кем-то выделенную область памяти). Хочется передать этой функции нечто (понятно почему слово нечто, так обще?) из стл, обернутое вокруг стл контейнера типа string, чтобьы эта ф-я сама того не зная работала с контенером stl.
P.S. Предложения использовать вектора etc не катят т.к. смысл преливать с одного контенера в другой. Т.е. задача сделать ЭТО с минимумом посредников.
P.S.S. Я сам такой, пытаюсь додумывать вопрос, но иногда "Бывают сны, доченька, просто сны" (с) Анекдот
L>Куда конкретней-то? Ну, ок, переформулирую. Есть некая ф-я, работающая с указателями на ANSI строки (а именно, производящая запись в эту уже кем-то выделенную область памяти). Хочется передать этой функции нечто (понятно почему слово нечто, так обще?) из стл, обернутое вокруг стл контейнера типа string, чтобьы эта ф-я сама того не зная работала с контенером stl.
Так std::string:c_str() подойдет, если использовать хак с преобразованием типа к char *, иначе — никак.
Еще как вариант написать свой простенький врапер над char * и юзать его — для переносимости.
Возможно лучше будет сделать обратное: STL код и алгоритмы относительно не сложно заставить работать с RTL строками.