Re[2]: Конкатенация строк и чисел в С++ одним выражением
От: Аноним  
Дата: 23.03.06 12:37
Оценка:
Здравствуйте, astral_marine, Вы писали:

_>
_>#define _S(msg)   (((std::basic_ostringstream<TCHAR>&)(((std::basic_ostringstream<TCHAR>&)std::basic_ostringstream<TCHAR>()) << msg)).str())

_>#define _SA(msg)  (((std::basic_ostringstream<char>&)(((std::basic_ostringstream<char>&)std::basic_ostringstream<char>()) << msg)).str())
_>#define _SW(msg)  (((std::basic_ostringstream<wchar_t>&)(((std::basic_ostringstream<wchar_t>&)std::basic_ostringstream<wchar_t>()) << msg)).str())
_>

_>
_>float a = 1.1;
_>SetError(_S("Ошибка в файле: " << FILE_NAME << 12 << 12.16 << a));
_>


_>Код работает в Visual C++ 6.0, 2003

Что-то ошибку выдаёт:

main.cpp(51): error C2514: 'std::basic_ostringstream<_Elem,_Traits,_Alloc>' : class has no constructors
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Alloc=std::allocator<char>
]
Re[3]: Конкатенация строк и чисел в С++ одним выражением
От: astral_marine  
Дата: 23.03.06 12:45
Оценка:
#include <sstream>
Re[8]: std::string создать "динамически"
От: Centaur Россия  
Дата: 23.03.06 13:37
Оценка: 1 (1)
Здравствуйте, bolshik, Вы писали:

B>Здравствуйте, Аноним, Вы писали:


А>>Посоветуйте какой-нибудь кроме буста и такой чтобы можно было в одну строчку, т.к. _itoa тут не примениш...


B>
B>namespace std {
B>    string& operator+(string& s, int i) {
B>        ostringstream os(s);
B>        os.seekp(s.size(), ios_base::beg);
B>        os << i;
B>        s = os.str();
B>        return s;
B>    }
B>}
B>


Добавлять в пространство имён std что-либо, кроме специализаций шаблонов для пользовательских типов, запрещается пунктом 17.4.3.1/1 Стандарта. operator+ не является шаблоном, а std::string и int не являются пользовательскими типами, поэтому данный код вызывает неопределённое поведение.
Re[4]: Конкатенация строк и чисел в С++ одним выражением
От: Аноним  
Дата: 23.03.06 14:46
Оценка:
Здравствуйте, astral_marine, Вы писали:

_>
_>#include <sstream>
_>

Точно
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.