Иногда лучше собрать все диагностические
int main()
{
int ival = 1024; int *pival = &ival;
double dval = 3.14159; double *pdval = &dval;
ostringstream format_message;
// преобразование значений в строковое представление
format_message << "ival: " << ival
<< " адрес ival: " << pival << 'n'
<< "dval: " << dval
<< " адрес dval: " << pdval << endl;
string msg = format_message.str();
cout << " размер строки сообщения: " << msg.size()
<< " сообщение: " << msg << endl;
}
Иногда лучше собрать все диагностические сообщения об ошибках, а не выводить их по мере возникновения. Это легко сделать с помощью перегруженного множества функций форматирования:
string
format( string msg, int expected, int received )
{
ostringstream message;
message << msg << " ожидалось: " << expected
<< " принято: " << received << "\n";
return message.str();
}
string format( string msg, vector<int> *values );
// ... и так далее
Приложение может сохранить такие строки для последующего отображения и даже рассортировать их по серьезности. Обобщить эту идею помогают классы Notify (извещение), Log (протокол) и Error (ошибка).
Поток istringstream читает из объекта класса string, с помощью которого был сконструирован. В частности, он применяется для преобразования строкового представления числа в его арифметическое значение:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int ival = 1024; int *pival = &ival;
double dval = 3.14159; double *pdval = &dval;
// создает строку, в которой значения разделены пробелами
Содержание Назад Вперед