例如......
char* foo;
scanf("%[^\n\r]", foo);
如何在不包含C库的情况下在C ++中执行此操作?
答案 0 :(得分:2)
相当于你发布的内容[除了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 ++中也是有效的。它并不总是“正确”的解决方案,但肯定也不是完全错误。
答案 1 :(得分:0)
scanf
的C ++版本为std::scanf
,可以在<cstdio>
标题中找到。是的,它是相同的功能 - 因为C函数也可以在C ++中使用。
答案 2 :(得分:0)
有两种简单的方法可以替换scanf
。
std::cin
可以在标准库中找到。
std::getline(std::cin, line);
将用户的输入(最多但不包括换行符)转换为std::string
变量line
。