Тебе повезло, у меня настроение написания кода ...
Получение строк строка за строкой:
std::ifstream file(path);
if(file) // opened successfully?
{
std::string line;
while(std::getline(file, line))
{
// use line
}
if(file.eof())
{
// entire file read, file was OK
}
else
{
// some error occured! need appropriate handling
}
}
Разделение строк:
std::string s = "hello world";
auto keyEnd = std::find_if(s.begin(), s.end(), isspace);
auto valueBegin = std::find_if(i, s.end(), isalnum);
std::string key(s.begin(), keyEnd);
std::string value(valueBegin, s.end());
Теперь вы можете проверить и ключ, и значение для правильного формата, например, оба содержат ровно один символ, и отклонить файл, если он недействителен ...
Два вектора?Вы могли бы push_back
и ключ и значение, но, возможно, std::map<std::string, std::string>
(или std::unordered_map
) - лучший выбор?Или даже std::vector<std::pair<std::string, std::string>>
?Все они имеют преимущество в том, что они хранят ключ и значение вместе и будут более уместными, если вы не собираетесь поддерживать оба независимо (например, сортировка ключей, в то время как значения могут / должны сохранять первоначальный порядок).