一辰沁月 2025-05-12 23:40 采纳率: 0%
浏览 15

VScode多行黏贴有bug?

起因是刷算法题的时候发现程序中发现程序貌似会卡死
经过测试,发现程序满足三个条件,调试时就会卡住
1.程序中有多个读入(cin或者scanf)
2.终端中黏贴多行数据
3.多个读入之间断点
卡住的表现为点击逐过程后图标变灰,貌似在等待输入,只有通过不断点击暂停与继续才能调试代码
程序运行的视频
源码

#include <iostream>
using namespace std;
int main()
{
    // ios::sync_with_stdio(0);
    // cin.tie(0);
    // cout.tie(0);
    int a=0;
    for(int i=1;i<=5;i++){
        int c;        
        scanf("%d",&c);
        a++;
     cout<<"a:"<<a<<"\n";
    }
}
/*
第一种输入方式
1 2 3 4 5

第二种输入方式
1
2
3
4
5

*/

这是使用的tasks.json,调试没有使用到launch.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\SoftWare\\MinGW\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

尝试的方法

回退插件版本,重装插件,重装环境变量都试过了,都不行.
scanf或者cin都会出问题,取消同步也依然会有问题.
一年以前是可以正常运行的,后来重装了系统,软件环境都重新配置,今天一写就有问题.这样调试代码很难受,要是实在改不好就智能去用Clion了

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-05-12 23:40
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    VSCode多行黏贴有bug?

    你遇到的问题是,在 VSCode 中,多行黏贴数据到 C++ 程序中时,程序会卡死。根据你提供的信息,这个问题满足三个条件:

    1. 程序中有多个读入(使用 cinscanf
    2. 终端中黏贴多行数据
    3. 多个读入之间断点卡住

    这个问题可能是由于 VSCode 的多行黏贴机制导致的。VSCode 使用了一个名为 readline 的库来处理多行黏贴,这个库可能会导致卡死的问题。

    解决这个问题的一种方法是,使用 cin.getline 而不是 cin 来读取输入数据。cin.getline 可以读取一行数据,而不是卡死在多行黏贴中。

    例如:

    #include <iostream>
    #include <string>
    
    int main() {
        std::string line;
        while (std::getline(std::cin, line)) {
            // 处理一行数据
        }
        return 0;
    }
    

    在上面的代码中,我们使用 std::getline 来读取一行数据,而不是使用 cin。这样可以避免卡死的问题。

    如果你仍然遇到问题,可以尝试使用 readline 库的其他方法来处理多行黏贴,例如使用 readline::readline 函数来读取一行数据。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月12日