上面的代码编译gcc但不编译 Visual C++。
严格按照标准,哪一个是错的?我假设这是一个 gcc 扩展,但我没有在标准中找到证明(我没有找到>>(char*)
- 这是证明吗?)。
#include <iostream>
int main() {
char* c = new char[200];
char s[200];
std::cin >> s;
std::cin >> c; // Visual C++ сообщает об ошибке C2679
std::cout << s;
std::cout << c;
}
自 C++20 以来,代码不再正确。
如果您看这里,您可以看到 C++20 删除
>>
了参数char *
并将其替换>>
为参数char (&)[N]
。第一个和 有同样的缺陷
gets
,所以后来被删掉也就不足为奇了gets
。