栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

VsCode C++使用相对路径读取文件失败的原因及解决方案

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VsCode C++使用相对路径读取文件失败的原因及解决方案

VsCode C++使用相对路径读取文件失败的原因及解决方案
      • 1. 读取失败的原因
      • 2. 解决方案

1. 读取失败的原因

文件读取失败的原因之一便是文件路径错误,这里的错误包含两个方面:一个是路径中的某个文件夹或者该文件的命名写错;另一个是在使用相对路径时,往往搞不清楚到底相对哪个文件路径。
在使用相对路径打开文本文件时,我们一般将读取的文本文件放在源代码所在的文件夹下,路径字符串通常写成如下形式:

string path = './data.txt'

一般来说这样不会出错,文件能够顺利读取。然而,在VsCode中,path存储的路径是不正确的,./并非我们认为的当前源文件所在的目录,此时真正的相对路径是launch.json文件中键名为"cwd"的对应值,如下所示。

{
    "version": "0.2.0",
    "configurations": [
 
        {
            "name": "(gdb) Launch",
            "preLaunchTask": "g++.exe build active file",
            "type": "cppdbg",//只能为cppdbg
            // ...
            "cwd": "${workspaceFolder}", // 决定了相对路径
            "environment": [],
            "externalConsole": true,
            // 省略了部分键
        }
    ]
}

从中我们可知,"cwd": "${workspaceFolder}",它表示此时的目标工作路径是环境变量workspaceFolder,意为打开的Workspace文件夹,并非源代码所在的目录。
这里附上常见的环境变量及其意义:

$ {workspaceFolder} -在VS Code中打开的文件夹的路径
$ {workspaceFolderbasename} -在VS Code中打开的文件夹名称,不带任何斜杠(/)
$ {file} -当前打开的文件
$ {relativeFile} -当前相对于打开的文件workspaceFolder
$ {relativeFileDirname} -当前打开的文件相对于的目录名workspaceFolder
$ {filebasename} -当前打开的文件的基本名称
$ {filebasenameNoExtension} -当前打开的文件的基本名称,没有文件扩展名
$ {fileDirname} -当前打开的文件的目录名
$ {fileExtname} -当前打开的文件的扩展名
$ {cwd} -启动时任务运行器的当前工作目录
$ {lineNumber} -活动文件中当前选择的行号
$ {selectedText} -活动文件中的当前选定文本
$ {execPath} -正在运行的VS Code可执行文件的路径
$ {defaultBuildTask} -默认构建任务的名称
2. 解决方案

结合相关环境变量的意义,我们将launch.json文件中的"cwd"对应的值改为${fileDirname}即可,即"cwd": "${fileDirname}",,意为当前打开的文件的目录名,这样,我们把待读取的文本文件和源代码放在一块时,使用string path='./data.txt' 或 string path='data.txt'表示相对路径时就能顺利读取文件了。

以上只是笔者实践时的一点小发现,希望对各位小伙伴有所帮助~(若有文中有误,恳请批评指正!)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/528874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号