例如...
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
.