2

例如...

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

我如何在 C++ 中做到这一点,而不包括 C 库?

4

3 回答 3

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++ 中也有效。它并不总是“正确”的解决方案,但也肯定不是完全错误的。

于 2015-06-20T01:25:21.913 回答
1

的 C++ 版本scanfstd::scanf并且可以在<cstdio>标题中找到。是的,它是同一个函数——因为 C 函数也可以在 C++ 中使用。

于 2015-06-20T01:03:10.770 回答
0

有两种简单的替换方法scanf

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

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

于 2015-06-20T01:40:45.837 回答