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

2023-05-16

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'表示相对路径时就能顺利读取文件了。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 「VS Code」Visual Studio Code 菜鸟教程:从入门到精通

    VS Code Visual Studio Code 教程 从入门到精通 日志 2020 04 26 介绍如何配置 LaTeX 环境 2019 09 06 更新了选择默认终端的方法 在胶片中补全列选方式 2019 05 26 补全了全文的剩
  • 用Vscode编辑verilog代码配置

    这篇教程感觉很详细了 我这里分享一下vscode和插件的安装包链接 都是官网下载的 放心食用 用VSCode编辑verilog代码 iverilog编译 自动例化 自动补全 自动格式化等常用插件 链接 https pan baidu com
  • vscode连接github

    此次采用ssh方式 分为以下几步 目录 1 生成公钥 配置到github 2 在本地建立仓库 推送到本地的master分支 3 在github建立仓库 复制ssh 进行推送 一 生成公钥 本地生成公钥和私钥 将公钥配置到github中 通过
  • window10在vscode中配置conda出错解决办法

    Windows 10 VSCode激活conda虚拟环境失败解决方案 CommandNotFoundError Your shell has not been 码农家园
  • Jupyter Error “bad file descriptor“ in VSCode

    Jupyter Error bad file descriptor in VSCode 直接跑这一行 pip install upgrade force reinstall no cache dir jupyter
  • VSCode如何设置终端工作目录

    文章目录 前言 固定工作目录 Terminal Here 注意 前言 相信大家在使用VSCode的时候 都会有如下难受的感觉 每次打开终端的时候工作目录都是用户目录 如果要执行命令还得cd到当前文件夹 十分麻烦 为了提高工作效率 有必要设置
  • 【RTX 3060Ti 深度学习环境配置图文(安装Anaconda、VScode、CUDA、CUDNN、pytorch)】

    RTX 3060Ti 深度学习环境配置图文 安装Anaconda VScode CUDA CUDNN pytorch 配置 安装驱动 一 安装Anaconda 1 1 Anaconda简介 1 2 下载Anaconda 1 3安装Anaco
  • vscode前端常用插件 最新版

    1 不需要安装的插件 序号 名称 作用 settings json配置 1 Auto Rename Tag 自动关闭标签 editor linkedEditing true 2 Auto Close Tag 标签自动闭合 html auto
  • vsCode开发STM32设置头文件宏定义

    一 问题描述 使用 HAL 库新建 STM32 工程后 使用 vsCode 打开工程文件夹 会提示找不到头文件 以及比变量没有定义 如 uint32 t 不是一个有效类型等错误提示 如下图所示 二 原因分析 vsCode 中没有配置头文件路
  • 怎么用vscode进行单步调试

    1 修改launch文件 version 0 2 0 configurations name gdb Launch type cppdbg request launch program workspaceFolder build my cm
  • 最快方式 ESP-IDF 创建例子 教程

    需要条件 安装了 VSCODE 安装了插件 Espressif IDF工具 系统中安装了 ESP IDF 可使用离线包 或在线安装包 在插件中配置了 ESP IDF 可能需要在线更新一些东西 点击F1 输入 ESP 等待提示 出现提示后 选
  • vscode 中使用鼠标Ctrl+滚轮放大缩小

    1 使用鼠标Ctrl 滚轮放大缩小 打开 文件 gt 首选项 gt 设置 gt 用户 gt 下面的JSON 2 3 点击在settings json中编辑 4 添加下面一行 editor mouseWheelZoom true 5 最后保存
  • Vscode连接远程服务器(一套配置成功)

    安装远程开发插件Remote Development 1 在商店中搜索Remote Development并安装 2 添加服务器连接配置 点击该选项卡 会进入SSH TARGETS的添加 如下图所示 填写配置信息可在下边操作中查看 修改 想
  • vscode使用手册

    VS Code Visual Studio Code 是一款轻量级 跨平台的源代码编辑器 支持语法高亮 自动补全 调试 Git 版本控制等功能 下面是一些使用 VS Code 的基本操作 安装和启动 在官网上下载并安装 VS Code 打开
  • 企业微信登录-前端实现

    企业微信登录 企业微信登录 前端具体实现 下面代码中配置项的字段具体用途说明可以阅读企业微信开发者说明文档 我们通过提供的企业微信登录组件来进行站内登录 下面是我封装的登录组件以及使用方法 weChatLogin vue 封装的组件
  • TensorFlow.js预测鸢尾花种类

    源码连接 TensorFlow js实现鸢尾花种类预测 机器学习文档类资源 CSDN下载 一 加载IRIS数据集 创建index html入口文件 跳转到script主文件 在script js文件夹中利用预先准备好的脚本生成鸢尾花数据集
  • 【最全镜像源】pip国内镜像最全收集【清华源、豆瓣、阿里云,北外,华科,中科大,中科院,腾讯云,华为云,搜狐,网易】

    清华源 i https pypi tuna tsinghua edu cn simple 北外 i https mirrors bfsu edu cn pypi web simple 中科大 i https pypi mirrors ust
  • nodejs+vue+elementui电子数码产品商城推荐系统vscode毕业设计

    基于vue的电子产品推荐系统分为前台和后台两部 前台部分主要是让用户购买和查看商品使用的 后台主要是让管理员人员发布商品相关信息和管理订单使用的 前台部分包括用户注册登录 查看商品相关信息 查看公告信息 查看热卖产品 查看精品产品 将商品加
  • VSCode 代码高亮 变量类型、函数名、类名没有颜色 - 设置主题即可

    https zhuanlan zhihu com p 630401039 之前应该设置主题了 但不知道为啥C 里面只有 int 有高亮 其他像 cv Mat 函数名 类名都没有颜色 解决方案是重新设置一下主题 File preference
  • vscode插件离线安装地址

    因内网开发 编辑器不可联网 插件需要离线安装 vscode插件商店 Extensions for Visual Studio family of products Visual Studio Marketplace

随机推荐

  • 关于mysql联合索引的一道简单笔试题与思考

    最近做了一道关于mysql联合索引的题 具体的题目个人的收获参考的链接索引的那些事 具体的题目 答案 xff1a 1 四个字段均使用了该索引 2 c1 xff0c c2字段使用了该索引 3 c1字段使用该索引 4 c1字段使用该索引 5 c
  • 目前spring阶段一些有用得文章

    自己写给自己看当作笔记 SpringBoot自动配置原理是什么 https www cnblogs com chenweichu p 12663798 html 1 在 64 SpringBootApplication中有一个注解 64 E
  • 面试常问的事情与题目

    随便给份工作我吧 提示 xff1a 面试多总结一下经验 xff0c 抓重点 xff0c 而不是什么都想准备好 其实自己就是一个菜狗 xff0c 备考了半年 xff0c 什么鸡儿都忘记了 xff0c 从零开始 文章目录 前言一 基本流程大概二
  • 我的常用基础指令

    docker相关 run it ubuntu span class token function bash span i 是以交互式的方式启动 t 是以终端的形式启动 p 映射端口号 xff1a 原始端口号 指定端口号启动 例 xff1a
  • vue jqurey 等前端常用

    vue components 注册组件 如 xff1a span class token keyword import span SelectDict span class token keyword from span span clas
  • 《Linux 内核完全注释》阅读笔记

    在阅读源代码之前 xff0c 有必要对Linux内核的体系结构 源代码的目录结构有个宏观地了解 xff0c Linux内核完全注释 非常详细地介绍了这方面的内容 xff0c 所以 这里仅仅进行概述性的讨论 xff0c 以便让所有的笔记构成一
  • 关于Java-stream的一下日常使用

    惰式执行 对 stream的操作并不会立即执行 如果用户真正需要的时候才会执行 span class token class name Stream span span class token punctuation span span c
  • 怎么获取别人服务器信息失败,获取服务器信息失败

    获取服务器信息失败 内容精选 换一换 1 若希望以主席身份入会 xff0c enter code必须传入主席密码 若希望以来宾身份入会 xff0c 当会议要求来宾密码时 xff0c enter code必须传入来宾密码 xff0c 会议不要
  • 我的世界服务器合成表修改,【组件教程】行为包03:修改合成表

    大家好我是那个谁 xff0c 今天为大家带来组件系列教程的第三课 xff0c 在上一课中我们对于掉落物进行了详细的讲解 xff0c 这一课中我们要把目光看向我的世界另一重要玩法组成部分 xff1a 合成 打开原版行为包中recipes文件夹
  • liunx 全盘查找_linux查找文件命令find怎么用

    linux查找文件命令find怎么用 Linux 文件搜索命令find的操作使用方法如下 xff1a 1 全盘搜索 xff0c 也可以指定目录搜索 find 搜索目录 name 目标名字 xff0c find name file 2 这样搜
  • 程序员的成长之路:回顾初心,质疑自我

    经过3 4年的成长期 xff0c 你说日常写代码无压力 xff0c 代码质量也可以 xff0c 完成日常工作后 xff0c 就不知道做什么 xff1f 如果现在的你正好是这么一种状态 xff0c 想提升却不知道往哪走 xff1f 那你一定进
  • CentOS 7中安装Oracle JDK

    1 前往Oracle官网http www oracle com technetwork java javase downloads index html下载JDK xff0c 这里我们选择rpm包 xff08 注意 xff1a 下载前须接受
  • 给android程序添加页面,向 Android 应用中添加闪屏页和启动页

    向 Android 应用中添加闪屏页和启动页 开启 Flutter 的体验需要短暂地等待 Dart 的初始化 一个完整的 Flutter 应用还额外需要 Android 应用程序标准的初始化时间 Flutter 支持在 Android 应用
  • ArchLinux必备命令记录(manjaro)

    1 添加新账户 useradd username新建账户 useradd d home xxx m xxx创建用户 xff0c 并同时生成用户目录 xff0c 不然账户无法正常启用 passwd username修改密码 userdel f
  • js使用lottie读取json文件并修改文件参数后渲染

    js使用lottie读取json文件并修改文件参数后渲染 1 效果图 说明 xff1a 车辆模型是通过json文件渲染的 2 代码 2 1 引入lottie js xff08 如果没有 xff0c 网上资源很多 xff0c 请自行下载 xf
  • Mybatis基础+增删改查(代码示例)

    目录 Mybatis基础 43 增删改查 xff08 代码示例 xff09 首先什么是MyBatis xff1f MyBatis中文文档 xff08 学习参考资料 xff09 xff1a MyBatis 基础框架搭建源码 xff1a MyB
  • KVM虚拟化工具简介及安装

    1 KVM简介 Kernel based Virtual Machine的简称 xff0c 是一个开源的系统虚拟化模块 xff0c 自Linux2 6 20之后集成在Linux的各个主要发行版本中 它使用Linux自身的调度器进行管理 xf
  • 按键消抖

    按键消抖 按键是FPGA实验工程中常见的电子元器件 xff0c 通常用作系统复位信号或者控制 外部信号的输入 按键消抖主要针对的是机械弹性开关 xff08 按下去 xff0c 一旦松开就会弹上去 xff09 xff0c 当机械触点断开 闭合
  • java ee 值范围_JAVAEE之内置对象和属性范围

    内置对象和属性范围 四种属性范围 九个内置对象 1 内置对象 如果说想要使用一个对象 xff0c 必须new 出来 xff0c 但是在我们的jsp操作中 xff0c 发现我们使用过的out request对象没有进行实例化 xff0c 类似
  • VsCode C++使用相对路径读取文件失败的原因及解决方案

    VsCode C 43 43 使用相对路径读取文件失败的原因及解决方案 1 读取失败的原因2 解决方案 1 读取失败的原因 文件读取失败的原因之一便是文件路径错误 xff0c 这里的错误包含两个方面 xff1a 一个是路径中的某个文件夹或者