форматированный ввод — Какая версия scanf для C ++?

Например…

char* foo;
scanf("%[^\n\r]", foo);

Как я могу сделать это в C ++, не включая библиотеки C?

-3

Решение

Эквивалент того, что вы опубликовали [помимо того факта, что char *foo без выделения памяти, вероятно, приведет к записи в NULL или в другое случайное место в памяти]

 std::string foo;
std::getline(std::cin, foo);

Но для более сложных случаев, когда вы читаете несколько статей, либо cin >> x >> y >> z; или же std::getline(std::cin, str); std::stringstream ss(str); ss >> x >> y >> z; — или некоторая их комбинация.

Но допустимый C-код действителен и в C ++. Это не всегда «правильное» решение, но, конечно, и не совсем неправильное.

2

Другие решения

C ++ версия scanf является std::scanf и можно найти в <cstdio> заголовок. Да, это та же самая функция — потому что функции C могут также использоваться в C ++.

0

Есть два простых способа заменить scanf,

  1. std::cin который можно найти в стандартной библиотеке.

  2. std::getline(std::cin, line); который принимает пользовательский ввод, но не включая разрыв строки, в std::string переменная line,

0
По вопросам рекламы [email protected]