为什么 VSCode 无法读取与打开的文件位于同一目录中的文件?

Why is VSCode not able to read from files in the same directory as the opened file?

提问人:PikaCiung 提问时间:5/5/2023 最后编辑:UpAndAdamPikaCiung 更新时间:5/6/2023 访问量:106

问:

我已经搜索了这个并尝试了多种launch.json和tasks.json配置,但似乎没有任何效果。当我从控制台读取时,我用 c++ 编写的程序可以正常工作,因此问题不在于原始代码。我尝试过多个程序,但从未能够让它从文件中读取。我希望你能帮上忙。 这是我launch.json:

{
    "version": "0.2.0",
        "configurations": [
        {
          "name": "C/C++: gcc.exe build and debug active file",
          "type": "cppdbg",
          "request": "launch",
          "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "gdb",
        "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
        "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
       ],
     
      }
      ],
      "preLaunchTask": "C/C++: gcc.exe build active file"
      }

这是我tasks.json:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\Program Files\\CodeBlocks\\MinGW\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\Program Files\\CodeBlocks\\MinGW\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

例如,文件“bac.in”包含数字 。 运行此程序时,控制台显示 0 而不是 144:1 7 2 1 1 2 1 7 2

#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("bac.in");
int a[10];

int main()
{ 
    int S=0, i;
    while ( fin >> i )
    {
        if ( a[i] == 0 )
        {
            a[i]= 1;
            S += 10;
        }
        S += i*i;
    }
    cout << S;
    return 0;
}
C++ 文件 visual-studio-code ifstream

评论

2赞 drescherjm 5/5/2023
"cwd": "${fileDirname}",应该处理的。
0赞 Jabberwocky 5/5/2023
OT:你应该帮自己一个忙,正确地缩进你的代码,比如你的C++教科书中的示例。
1赞 Some programmer dude 5/5/2023
不要使用全局变量。始终检查错误。
0赞 drescherjm 5/5/2023
OT:奇怪的是,你提到了 2 个不同的 MinGW 编译器。tasks.jsonlaunch.json
0赞 drescherjm 5/5/2023
可能与可执行文件不在同一个文件夹中。也许您在操作系统文件资源管理器中启用了“隐藏已知类型的扩展名”,并且您实际上创建了它,并且您的文件资源管理器向您隐藏了它,从而导致了问题和混乱。如果您启用了该默认设置,我建议将其关闭,因为它可能会导致您对 c++ 中的文件感到困惑。bac.inbac.in.txt

答: 暂无答案