小编Dar*_*nix的帖子

使用 <filesystem> 检查目录是否存在

我有一个包含某个文件路径的字符串。该文件不需要存在(在我的函数中可以创建它),但目录必须存在。所以我想使用<filesystem>库来检查它。我尝试了这段代码:

std::string filepath = {"C:\\Users\\User\\test.txt"};
bool filepathExists = std::filesystem::exists(filepath);
Run Code Online (Sandbox Code Playgroud)

另外,路径是绝对的。例如,"C:\Users\User\file.txt"我想检查是否"C:\Users\User"存在。我尝试使用迭代器构造一个字符串:从开始到最后一次出现'\\',但它的解决方案非常粗糙,如果路径仅包含文件名,我会得到异常。

因此,有人可以提供更优雅的方法吗?

c++ directory utilities file std-filesystem

9
推荐指数
1
解决办法
1万
查看次数

在 C++ 中嵌入 Python(使用 CMake)

我正在尝试用 C++ 运行 python 脚本。例如:

// main.cpp
#include <python3.10/Python.h>
int main(int argc, char* argv[])
{
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                       "print('Today is',ctime(time()))\n");
    Py_Finalize();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有这样的 CMakeLists:

// CMakeLists.txt
cmake_minimum_required(VERSION 3.21)
project(task_01)

SET(CMAKE_CXX_FLAGS "-O0")
SET(CMAKE_C_FLAGS "-O0")

set(CMAKE_CXX_STANDARD 20)

find_package (Python COMPONENTS Interpreter Development)
find_package(PythonLibs 3.10 REQUIRED)
include_directories ( ${PYTHON_INCLUDE_DIRS} )

add_executable(task_01 main.cpp)
Run Code Online (Sandbox Code Playgroud)

但我遇到编译错误(我使用 CLion IDE):

undefined reference to `Py_Initialize'
undefined reference to `PyRun_SimpleStringFlags'
undefined reference to `Py_Finalize'
Run Code Online (Sandbox Code Playgroud)

运行 python 脚本我做错了什么?

c++ python cmake

1
推荐指数
1
解决办法
2836
查看次数

标签 统计

c++ ×2

cmake ×1

directory ×1

file ×1

python ×1

std-filesystem ×1

utilities ×1