С++ для начинающих


         

Иногда лучше собрать все диагностические


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;

           // создает строку, в которой значения разделены пробелами


Содержание  Назад  Вперед