小编Dan*_*l H的帖子

控制台未正确读取输入字符串

我试图通过执行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++样式代码后的错误消息框:

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.
Run Code Online (Sandbox Code Playgroud)

执行C风格代码后出错:

Exception triggered at 0x00007FF95C9398E9 (ucrtbased.dll) in Test.exe: 0xC0000005: Access violation when …
Run Code Online (Sandbox Code Playgroud)

c++ console winapi c++17

-1
推荐指数
1
解决办法
92
查看次数

标签 统计

c++ ×1

c++17 ×1

console ×1

winapi ×1