本文整理汇总了C++中ostringstream::seekp方法的典型用法代码示例。如果您正苦于以下问题:C++ ostringstream::seekp方法的具体用法?C++ ostringstream::seekp怎么用?C++ ostringstream::seekp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ostringstream
的用法示例。
在下文中一共展示了ostringstream::seekp方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showError
/*
displays an error message and optionally stops the program
If stopping, shows the accumulated error_message generated by catError()
N.B.: variadic. First parameter is the stop flag, followed by parameters same as printf
*/
int showError(int stop, const char *fmt, ...) {
va_list ap;
size_t err_lngth;
char error_buffer[MAX_ERROR_MESSAGE];
size_t found;
// add the printf-style parameters to error_message
if (fmt && *fmt) {
va_start (ap, fmt);
err_lngth = vsnprintf (error_buffer,MAX_ERROR_MESSAGE, fmt, ap);
va_end (ap);
if (err_lngth) error_messages << error_buffer;
}
// Append any system error string
if (errno != 0) {
found = error_messages.str().find_last_not_of("\n\r");
if (found != std::string::npos) {
error_messages.seekp(found+1);
}
strerror_r(errno, error_buffer, MAX_ERROR_MESSAGE);
error_messages << ": " << error_buffer << "\n";
}
if (error_messages.str().size()) {
cerr << error_messages.str();
// Make sure we print a newline
found = error_messages.str().find_last_not_of("\n\r");
if ( error_messages.str().find_first_of("\n\r",found) == std::string::npos ) cerr << "\n";
}
if (stop && !error_messages.str().size()) {
cerr << "Fatal error - terminating.\n";
} else if (stop) {
exit(0);
}
return(0);
}
示例2: catError
/*
Accumulates errors and warnings to be shown later
N.B.: Variadic - use like printf
*/
void catError (const char *fmt, ...) {
va_list ap;
size_t err_lngth;
char error_buffer[MAX_ERROR_MESSAGE];
char newline=0;
size_t found;
// process the printf-style parameters
va_start (ap, fmt);
err_lngth = vsnprintf (error_buffer,MAX_ERROR_MESSAGE, fmt, ap);
va_end (ap);
error_messages << error_buffer;
if (errno != 0) {
// Append any system error string
strerror_r(errno, error_buffer, MAX_ERROR_MESSAGE);
if (strlen(error_buffer)) {
// clean trailing newlines
found = error_messages.str().find_last_not_of("\n\r");
if (found != std::string::npos) {
if ( error_messages.str().find_first_of("\n\r",found) != std::string::npos ) newline = 1;
error_messages.seekp(found+1);
}
error_messages << ": " << error_buffer;
if (newline) error_messages << "\n";
}
errno = 0;
}
}