我试图通过执行C++风格来读取控制台输入
int main()
{
std::string str;
std::getline(std::cin, str);
// also tested: std::cin >> str;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和C风格
int main()
{
char* str = new char[20];
scanf_s("%s", str);
delete[] str;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是如果我输入一个字符串然后按回车键,控制台中的光标将不会跳转到下一行,它会跳转到输入命令所在行的第一列.输入第二个键会导致错误:
执行C++样式代码后的错误消息框:
Run Code Online (Sandbox Code Playgroud)Debug Assertion Failed! Program: D:\_extern\Test\Test.exe File: minkernel\crts\ucrt\src\appcrt\lowio\read.cpp Line: 259 Expression: static_cast<void const*>(source_buffer) == static_cast<void const*>(result_buffer) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
执行C风格代码后出错:
Run Code Online (Sandbox Code Playgroud)Exception triggered at 0x00007FF95C9398E9 (ucrtbased.dll) in Test.exe: 0xC0000005: Access violation when …