Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 18:45   #1
HelenSecuriter
Пользователь
 
Аватар для HelenSecuriter
 
Регистрация: 19.10.2010
Сообщений: 17
Вопрос Конвертация строкового потока в С-строку

Вопрос по С++:
подскажите, почему после выполнения:
Код:
ostringstream tmp;
/*... обращения к потоку tmp: tmp << ...;*/
const char *t=tmp.str().c_str();
переменная t хранит 0?
хотя если это же выражение передать параметром функции, то все нормально?
и как сделать, чтобы вместо этого нуля было нужное значение?
HelenSecuriter вне форума Ответить с цитированием
Старый 21.07.2011, 19:00   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
const char *t=tmp.str().c_str();
Так строки не присваивают. strcpy и подобные
p51x вне форума Ответить с цитированием
Старый 21.07.2011, 19:51   #3
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Так как я из интернет-кафе сейчас общаюсь, то шпаргалки под рукой нет.

Может быть вам возвращает 0, так как буфер потока пустой? Попробуйте туда что-то занести, а потом примените свое выражение. Либо открывайте поток, передав ему в качестве аргумента уж существующую символьную строку, и посмотрите, что он вам вернет в ответ на выполнение вашего выражения.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 24.07.2011, 20:13   #4
HelenSecuriter
Пользователь
 
Аватар для HelenSecuriter
 
Регистрация: 19.10.2010
Сообщений: 17
По умолчанию

Цитата:
Код:

const char *t=tmp.str().c_str();

Так строки не присваивают. strcpy и подобные
спасибо, это понятно, но хотелось бы попроще)))
в конце концов, это же указатель, какая разница, какого типа, все равно он пустым не может же быть!
и почему тогда с параметром функции все нормально?
HelenSecuriter вне форума Ответить с цитированием
Старый 24.07.2011, 20:30   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

HelenSecuriter

подскажите, почему после выполнения переменная t хранит 0?

потому что ты применяешь c_str() к временному объекту.
Rififi вне форума Ответить с цитированием
Старый 24.07.2011, 20:53   #6
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
HelenSecuriter

подскажите, почему после выполнения переменная t хранит 0?

потому что ты применяешь c_str() к временному объекту.
Нет, дело не в этом. p51x прав - нужно пользовать strcpy и так далее.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Сортировка строкового массива Vikenty Помощь студентам 2 24.05.2010 00:06
переменная строкового типа Rustamel Microsoft Office Excel 4 19.04.2010 17:53
Файлы строкового типа (ПАСКАЛЬ) sir.andrey Помощь студентам 1 09.12.2009 14:33
C++, методы строкового класса Akord Помощь студентам 0 07.12.2009 17:16