我有一些 C++ 代码,在解析某个文件头失败时需要生成错误消息。在这种情况下,我需要确保标头中的某个 4 字节字段是“OggS”,如果不是,则返回一条错误消息,例如“invalid capture_pattern: 'FooB'; waiting '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!";
}
从其他数据类型构建字符串的标准 C++ 习惯用法是什么?我没有结婚printf(3)
-style 格式在这里,所以请随意提出任何可行的建议。
您可以使用stringstream
or 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)