C++ эквивалент fscanf()?
И, пожалуйста, не говорите, что это fscanf();P
Я пытаюсь заменить эту строку:
if ( fscanf(fp, "P%c\n", &ch) != 1 )
Если я правильно понимаю, он пытается прочитать в char и сохранить его в &ch, только если он находится между 'P' и '\n'. Это правильно? И если это удастся, он возвращает 1 (количество символов, которые он прочитал)?
Я пытаюсь придумать версию C++. Есть ли какой-нибудь простой способ сделать такое форматированное чтение? Или мне нужно использовать операторы fstream, operator>> и nested if?
2 ответа
Безопасной альтернативой C++ с проверками типов является std:: stringstream.
В Visual Studio безопасной, но непереносимой эквивалентной функцией является fscanf_s.
В общем случае для переносимости вы должны использовать один из потоковых классов, который, как вы заметили, может затруднить правильное форматирование.