Эквивалент Fprint в C ++ - PullRequest
       13

Эквивалент Fprint в C ++

2 голосов
/ 26 апреля 2011

g++ (GCC) 4.6.0 20110419 (Red Hat 4.6.0-5)

что эквивалентно этому в c ++?Я знаю, что это скомпилируется в g ++.Но мне просто интересно посмотреть, есть ли что-то еще в c ++, которое я могу использовать следующим образом.

fprintf(stderr, "Server failed to receive message [ %s ]\n", stderror(errno));

Большое спасибо за любые предложения,

Ответы [ 4 ]

5 голосов
/ 26 апреля 2011

А как же:

std::cerr << "Server failed to receive message [" << stderror(errno)) << "]" << std::endl;
5 голосов
/ 26 апреля 2011

Выезд cerr in iostream . Это как cout, но для stderr.

 #include <iostream>

 std::cerr << "Server failed to receive message [ " << stderror(errno) << " ]" 
           << std::endl;

Или вы можете использовать boost :: forma t, чтобы получить безопасный тип sprintf.

 using namespace boost;
 std::cerr 
   << format("Server failed to receive message [ %s ]") % stderror(errno)
   << std::endl;
2 голосов
/ 26 апреля 2011

Вы можете использовать выходной поток cerr.

cerr << "Server failed to receive message [ " << stderror(errno) << " ]" << endl;

1 голос
/ 26 апреля 2011

Более общий ответ: вы можете использовать любой объект istream с операторами потока. Есть много других типов объектов, которые наследуются от istream. Например, объекты fstream - это тип istream, используемый для файлового ввода-вывода. Есть также объекты sstream (string stream), которые используются аналогично sprintf и sscanf.

При этом я бы с осторожностью использовал потоковые операторы C ++ вместо эквивалентов C (которые также поддерживаются в C ++.) Если вы используете операторы C ++, это очень усложнит интернационализацию.

...