本文整理汇总了C++中StringRange::ReadLine方法的典型用法代码示例。如果您正苦于以下问题:C++ StringRange::ReadLine方法的具体用法?C++ StringRange::ReadLine怎么用?C++ StringRange::ReadLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringRange
的用法示例。
在下文中一共展示了StringRange::ReadLine方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Read
void IniConfig::Read(const FileSystem::FileData &data)
{
StringRange buffer = data.AsStringRange();
buffer = buffer.StripUTF8BOM();
std::string section_name;
MapType *section_map = 0;
while (!buffer.Empty()) {
StringRange line = buffer.ReadLine().StripSpace();
// if the line is a comment, skip it
if (line.Empty() || (line[0] == '#')) continue;
// check for a section header
if ((line.Size() >= 2) && (line[0] == '[') && (line.end[-1] == ']')) {
++line.begin;
--line.end;
section_name = line.ToString();
section_map = 0;
continue;
}
const char *kend = line.FindChar('=');
// if there's no '=' sign, skip the line
if (kend == line.end) {
Output("WARNING: ignoring invalid line in config file:\n '%.*s'\n", int(line.Size()), line.begin);
continue;
}
StringRange key(line.begin, kend);
StringRange value(kend + 1, line.end);
// strip whitespace
key.end = key.RFindNonSpace();
value = value.StripSpace();
if (!section_map)
section_map = &m_map[section_name];
(*section_map)[key.ToString()] = value.ToString();
}
}