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.

В общем случае для переносимости вы должны использовать один из потоковых классов, который, как вы заметили, может затруднить правильное форматирование.

Другие вопросы по тегам