Считать из файла до символа
У меня в файле есть специальный символ "&", который делит его на две части для считывания. (Таблица и данные). Как при этом можно ограничить чтение до этого символа, и потом начать чтение с этого же символа (не учитывая его, конечно) в другую переменную?
Я так понимаю, мне нужен while (). Табличку я считываю следующим образом
while (std::getline(input, key, '#') && std::getline(input, value)) { ...}
перед этим мне нужно еще одно условие.
Пример файла
00#a
11#b
&
abcabca
Ответы (2 шт):
Автор решения: Optimus1
→ Ссылка
Можно по простому, как то так например:
ifstream File_read;
File_read.open(my_path, ios::in);
vector<string>Result_data_vector_1; //Сюда записываем считанные строки из файла до &
vector<string>Result_data_vector_2; //Сюда записываем считанные строки из файла после &
string Line_string;
int status=0;
while (!File_read.eof())
{
getline(File_read, Line_string);
if(Line_string == "&")
{
status=1;
}
else
{
if(status==0)
{
Result_data_vector_1.push_back(Line_string);
}
else
{
Result_data_vector_2.push_back(Line_string);
}
}
}
Автор решения: KoVadim
→ Ссылка
Да все очень просто (права подозреваю, что опять сломается:) )
std::string key, value;
while (input.peek() != '&' && std::getline(input, key, '#') && std::getline(input, value))
{
std::cout << key << "=" << value << "\n";
}
// читаем остаток
std::string line;
std::getline(input, line); // прочитаем амерсанд, что бы не мешался дальше
while (std::getline(input, line)) {
std::cout << ">> " << line << '\n';
}
input.peek() - это такая функция, которая подглядывает следующий символ, доступный для чтения.