我有一些C++代码需要在解析某个文件头失败时生成错误消息.在这种情况下,我需要确保标头中的某个4字节字段是"OggS",如果不是,则返回错误消息,例如"invalid capture_pattern:'FooB';期望'OggS'".我的代码看起来像这样:
const string OggPage::parseHeader(void) {
read(fd, capture_pattern, sizeof(capture_pattern)); // error handling omitted
if (strncmp(capture_pattern, CAPTURE_PATTERN, sizeof(capture_pattern)) != 0) {
char err[256];
snprintf(err, sizeof(err), "Failed to read %d bytes from file descriptor %d: %s\n", sizeof(capture_pattern), fd, err);
return err;
}
return "Everything was A-OK!";
}
Run Code Online (Sandbox Code Playgroud)
从其他数据类型构建字符串的标准C++习惯用法是什么?我不是printf(3)在这里坚持这种风格的格式,所以请随意提出任何可行的方法.
您可以使用stringstream或ostringstream来自C++标准库.如果不使用进一步的流来从中读取值(例如,它的istream部分将不被使用)ostringstream更合适.
#include <sstream>
#include <string>
#include <iostream>
int main() {
std::stringstream str_stream;
int number = 5;
str_stream << " String with number " << number << std::endl;;
std::string str = str_stream.str();
std::cout << str;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5657 次 |
| 最近记录: |