Чтение строки С++ с помощью scanf

Как говорится в названии, мне любопытно, есть ли способ прочитать строку С++ с помощью scanf.

Я знаю, что я могу читать каждый char и вставлять его в заслуживаемую строку, но мне нужно что-то вроде:

string a;
scanf("%SOMETHING", &a);

gets() также не работает.

Спасибо заранее!

Ответы

Ответ 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) { ... }, но это другой вопрос.

Ответ 2

это может работать

char tmp[101];
scanf("%100s", tmp);
string a= tmp;

Ответ 3

string temp;
scanf("%s",&temp.c_str());

Надеюсь, это сработает!