Как мне прочитать текстовый файл из второй строки с помощью fstream?
Вы можете использовать функцию c++ игнорирования потока:
ifstream stream("filename.txt");
// Get and drop a line
stream.ignore ( std::numeric_limits::max(), '\n' );
// Get and store a line for processing.
// std::getline() has a third parameter the defaults to '\n' as the line
// delimiter.
std::string line;
std::getline(stream,line);
std::string word;
stream >> word; // Reads one space separated word from the stream.
Распространенная ошибка при чтении файла:
while( someStream.good() ) // !someStream.eof()
{
getline( someStream, line );
cout << line << endl;
}
Это fstream не удается, потому что: При fstream чтении последней строки не cpp читается маркер EOF. Таким fstream образом, поток по-прежнему cxx хорош, но в потоке больше fstream не осталось данных для чтения. Таким c++ образом, цикл повторяется. Затем cpp std::getline() пытается прочитать cxx другую строку из someStream c++ и терпит неудачу, но все c++ равно записывает строку в cpp std::cout.
Простое решение:
while( someStream ) // Same as someStream.good()
{
getline( someStream, line );
if (someStream) // streams when used in a boolean context are converted to a type that is usable in that context. If the stream is in a good state the object returned can be used as true
{
// Only write to cout if the getline did not fail.
cout << line << endl;
}
}
Правильное решение:
while(getline( someStream, line ))
{
// Loop only entered if reading a line from somestream is OK.
// Note: getline() returns a stream reference. This is automatically cast
// to boolean for the test. streams have a cast to bool operator that checks
// good()
cout << line << endl;
}
c++
fstream
Как мне прочитать текстовый файл из второй строки с помощью fstream?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.