2012-03-07 3 views
0

У меня странное поведение со строками. Кажется, что, если я создам два строковых потока, один будет писать правильно, а один вызовет ошибки. (Тест является символ *)Несоответствующие строковые ошибки

ostringstream s; 
ostringstream d; 
s<<test<<endl; 
d<<test<<endl; 

Это дает сообщение «Ошибка: недопустимые операнды ВНУТРА типов и„Const символ *“в двоичный„оператора < <“» для последней строки.

ostringstream s; 
ostringstream d; 
d<<test<<endl; 
d<<test<<endl; 

Это дает сообщение «Ошибка: недопустимые операнды ВНУТРА типов и„Const символ *“для бинарной„оператора < <“» для обоего линий пишущих д.

Два потока должны быть одинаковыми, поэтому я не знаю, почему d не работает. Переключение порядка деклараций s и d ничего не меняет. У кого-нибудь есть идеи, почему это может случиться?

Спасибо!

+0

Создайте минимально возможную полную программу, которая демонстрирует эту ошибку и публикует ее. http://sscce.org –

+0

Можем ли мы увидеть точные данные переменной 'test'? Я запустил этот код, используя string test = 'test'; и d << test.c_str() << endl; и у него не было проблем. –

+0

Извините всех, я глупо затенял переменную, исправленную сейчас! Спасибо за вашу помощь! – akroy

ответ

2

У меня такая же ошибка, когда переменная d уже объявлена, поэтому она имеет другой тип.

+1

О, спасибо! Несмотря на наличие более описательных имен в реальной программе, мне все же удалось повторно использовать имя переменной. Мир теперь имеет больше смысла! – akroy

+0

Иногда ошибки компиляторов не отражают реальной причины их возникновения, поэтому вы должны запомнить причину такого, что у вас было. – Seagull

+0

Я думаю, что -Wall должен предупредить вас об этой ситуации –

Смежные вопросы