Например…
char* foo;
scanf("%[^\n\r]", foo);
Как я могу сделать это в C ++, не включая библиотеки C?
Эквивалент того, что вы опубликовали [помимо того факта, что 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 ++. Это не всегда «правильное» решение, но, конечно, и не совсем неправильное.
C ++ версия scanf
является std::scanf
и можно найти в <cstdio>
заголовок. Да, это та же самая функция — потому что функции C могут также использоваться в C ++.
Есть два простых способа заменить scanf
,
std::cin
который можно найти в стандартной библиотеке.
std::getline(std::cin, line);
который принимает пользовательский ввод, но не включая разрыв строки, в std::string
переменная line
,