Пример:
std::ifstream in("some_file.txt");
std::string line; // must be outside ?
while(getline(in,line)){
// how to make 'line' only available inside of 'while' ?
}
Циклы Do-while не будут работать для первой итерации:
std::ifstream in("some_fule.txt");
do{
std::string line;
// line will be empty on first iteration
}while(getline(in,line));
Конечно, всегда можно иметь if(line.empty()) getline(...)
, но это не совсем правильно.
Я также думал о злоупотреблении оператором запятой:
while(string line, getline(in,line)){
}
но это не сработает, и MSVC говорит, что это потому, что line
не конвертируется в bool. Обычно следующая последовательность
statement-1, statement-2, statement-3
должен иметь тип type-of statement-3
(без учета перегруженного operator,
). Я не понимаю, почему это не работает. Есть идеи?