在Ubuntu 18.04上支持C++17的std::filesystem的方法

      在Ubuntu 18.04上通过命令sudo apt install gcc g++安装的gcc/g++版本为7.5,此版本并不直接支持filesystem,如下图所示:

      Ubuntu 18.04上的g++ 7.5支持experimental的filesystem,即std::experimental::filesystem,若想使Ubuntu 18.04支持std::filesystem,一种方法是升级g++,依次执行如下命令:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9 g++-9
# 修改软链接
cd /usr/bin
sudo rm gcc g++
sudo ln -s gcc-9 gcc
sudo ln -s g++-9 g++

      测试代码test_filesystem.cpp如下:

#include <iostream>
//#include <experimental/filesystem> // g++ 7.5
#include <filesystem> // g++ 9.4

int main()
{
    //std::experimental::filesystem::path current_directory = std::experimental::filesystem::current_path(); // g++ 7.5
    std::filesystem::path current_directory = std::filesystem::current_path(); // g++ 9.4
    std::cout << "current directory: " << current_directory << std::endl;
    return 0;
}

      编译脚本build.sh如下:

#! /bin/bash

#g++ -o test_filesystem test_filesystem.cpp -lstdc++fs # g++ 7.5
g++ -o test_filesystem test_filesystem.cpp -std=c++17 # g++ 9.4

      执行结果如下所示:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值