什么是scanf的C ++版本?

时间:2015-06-20 00:59:43

标签: c++ formatted-input

例如......

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

如何在不包含C库的情况下在C ++中执行此操作?

3 个答案:

答案 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

  1. std::cin可以在标准库中找到。

  2. std::getline(std::cin, line);将用户的输入(最多但不包括换行符)转换为std::string变量line