本文整理汇总了C++中LineBuffer::get方法的典型用法代码示例。如果您正苦于以下问题:C++ LineBuffer::get方法的具体用法?C++ LineBuffer::get怎么用?C++ LineBuffer::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LineBuffer
的用法示例。
在下文中一共展示了LineBuffer::get方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ContigPair
explicit ContigPair(LineBuffer &source)
: count(0)
{
auto const line = source.get();
if (line.first == nullptr) return;
auto n = 0;
for (auto i = line.first, end = i; ; ++end) {
if (end == line.second || *end == '\t') {
switch (n) {
case 0:
first.ref = unsigned(references[std::string(i, end)]);
break;
case 1:
if (!string_to_i(first.start, i, end)) goto CONVERSION_ERROR;
break;
case 2:
if (!string_to_i(first.end, i, end)) goto CONVERSION_ERROR;
break;
case 3:
second.ref = unsigned(references[std::string(i, end)]);
break;
case 4:
if (!string_to_i(second.start, i, end)) goto CONVERSION_ERROR;
break;
case 5:
if (!string_to_i(second.end, i, end)) goto CONVERSION_ERROR;
break;
case 6:
group = unsigned(groups[std::string(i, end)]);
break;
case 7:
std::cerr << "extra data in record: " << std::string(line.first, line.second) << std::endl;
return;
}
++n;
if (end == line.second)
break;
i = end + 1;
}
}
if (n < 6) {
std::cerr << "truncated record: " << std::string(line.first, line.second) << std::endl;
return;
}
if (n < 7)
group = groups[""];
count = 1;
return;
CONVERSION_ERROR:
std::cerr << "error parsing record: " << std::string(line.first, line.second) << std::endl;
return;
}