freopen() 不读取/写入现有文件,niether 在 vscode 中创建新文件

freopen() does not read / write to existing file, niether creates new file in vscode

我正在尝试从 C++ 中的两个单独的文本文件读取输入和输出。

代码(test.cpp):

#include<bits/stdc++.h>
using namespace std;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif

    int x = 6 ;
    cin >> x;
    cout << x;
}

input.txt:

1

output.txt为空

在 VS 代码中使用终端并编写命令时:

g++ test.cpp

.\a.exe

读取输入文本文件中的数据并将数据写入输出文本文件。

Result after Running

但是如果我使用调试,程序无法识别输入和输出文件。没有输入和输出是read/written。没有错误显示,程序刚刚结束。

Result after using Debugging

launch.json:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "g++.exe - Build and debug active file",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
        "args": [],
        "stopAtEntry": false,
        "cwd": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin",
        "environment": [],
        "console": "externalTerminal",
        "MIMode": "gdb",
        "miDebuggerPath": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "C/C++: g++.exe build active file"
    }
]

}

我希望文本文件中的 input/output 在调试时也能发生。

好的,我知道这里发生了什么。在launch.json文件中,"cwd"值为正在启动或调试的进程当前工作目录的路径,这是读取输入文件的地方来自和输出文件并默认写入。

您应该将其设置为您正在使用的文件所在的目录。