字符串流可以解析这样的东西吗?
Can stringstream parse something like this?
我有看起来像这样的数据字符串:
b = bool
i = int
sINT: = string whose length is INT followed by a : then the string
m = int message id.
例:
m133s11:Hello Worldi-57989b0b1b0
这将是:
Message ID 133
String 'Hello World' length 11
int -57989
bool false
bool true
bool false
STL中是否有可以轻松解析的内容?
是的:
std::stringstream data("m133s11:Hello Worldi-57989b0b1b0");
while(parse(data))
{
// 1 item was correctly removed from the stream
}
std::istream& parse(std::istream& data)
{
char format;
data >> format;
switch(format)
{
case 'i': int value; data >> value;break;
case 'm': int id; data >> id; break;
case 'b': bool value; data >> value; break;
case 's':
{
std::size_t size;
char x = '0';
data >> size >> x;
if ((!data) || (x != ':'))
{ // Something went wrong
data.setstate(std::ios_base::iostate::badbit);
}
else
{
std::string value(size, ' ');
data.read(&value[0], size);
}
break;
}
}
return data;
}
不是直接的。考虑到它的复杂性,除非你想根据上下文将其全部作为字符串和拼接来获取,否则我会说你最好使用 boost::regex 来搜索你的模式。
相关文章:
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 有没有一种 STL 方法可以找到字符串的所有排列,给出一个以 C++ 为单位的大小?
- 是否可以从字符串访问变量?
- 在现代C++中是否可以将字符串文本作为参数传递给C++模板?
- 是否有一种安全的方法可以断言字符串视图是否以 null 终止?
- 您可以解构参数化的构造函数吗?
- 为什么对字符串参数的常量引用可以采用字符串文字?
- 我可以检查字符串是否以空结尾,但不能检查它是否尚未以空结尾
- 是否可以使用字符串检查预处理器定义
- 是否可以使用字符串或字符索引数组
- 是否可以修改字符串输入?
- 有什么方法可以绕字符串
- C 指针可以指向字符串文字的静态成员数组
- std::wistringstream在解析时可以忽略字符串中的空格吗
- 有什么方法可以将字符串文字u8与变量一起使用吗
- 如何将模板类型转换为字符串(如果它也可以是字符串)
- 是否可以将字符串的 streambuf 直接传递给 filebuf?
- 是否可以为字符串文字创建模板的用户定义文字(文字后缀)
- 是否可以创建字符串和原子<int>键值对的unordered_map?
- 句子的句子时,有哪种类型的指标可以在字符串的末端进行