Ответ 1
Нет ситуации, при которой gets()
будет использоваться! Это всегда неправильно использовать gets()
, и он удаляется из C11 и удаляется из С++ 14.
scanf()
не поддерживает любые классы С++. Однако вы можете сохранить результат с scanf()
в std::string
:
std::string str(100, ' ');
if (1 == scanf("%*s", &str[0], str.size())) {
// ...
}
Я не совсем уверен в том, как указать длину буфера в scanf()
и в каком порядке идут параметры (есть вероятность, что параметры &str[0]
и str.size()
должны быть отменены, и я могу пропустите .
в строке формата). Обратите внимание, что полученный std::string
будет содержать завершающий нулевой символ, и он не изменит его размер.
Конечно, я просто использовал бы if (std::cin >> str) { ... }
, но это другой вопрос.