You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中使用字符串或字符命名并创建文件夹?

在C++中用字符串创建用户自定义文件夹的解决方法

原代码的问题

你当前代码的核心问题是_mkdir函数要求传入C风格字符串(const char*),但你直接将std::string与字符串字面量拼接后的结果传入,类型不匹配,导致函数无法正确识别路径。

修正方案(Windows平台_mkdir版本)

将拼接后的std::string通过c_str()方法转换为C风格字符串,同时增加返回值检查来排查错误:

#include <iostream>
#include <direct.h>
#include <string>
using namespace std;

int main() {
    string user = "alex";
    // 拼接完整文件夹路径
    string folderPath = "D:\\Programe\\VS\\ATM\\Fisiere\\" + user;
    // 转换为const char*传入_mkdir
    int createResult = _mkdir(folderPath.c_str());

    if (createResult == 0) {
        cout << "文件夹创建成功" << endl;
    } else {
        cout << "文件夹创建失败,错误码:" << createResult << endl;
        // 错误码-1常见原因:文件夹已存在、上级路径不存在、权限不足
    }
    return 0;
}

更推荐的跨平台方案(C++17及以上)

如果你的编译器支持C++17或更高版本,建议使用std::filesystem库,它不仅跨平台(支持Windows、Linux、macOS),还能更方便地处理路径和错误:

#include <iostream>
#include <filesystem>
#include <string>

namespace fs = std::filesystem;

int main() {
    std::string user = "alex";
    fs::path folderPath = "D:\\Programe\\VS\\ATM\\Fisiere\\" + user;

    try {
        // create_directory会自动处理路径合法性,返回true表示成功创建新文件夹
        if (fs::create_directory(folderPath)) {
            std::cout << "文件夹创建成功" << std::endl;
        } else {
            std::cout << "文件夹已存在或无法创建" << std::endl;
        }
    } catch (const fs::filesystem_error& err) {
        std::cout << "创建出错:" << err.what() << std::endl;
    }
    return 0;
}

注意事项

  • 确保上级目录(比如D:\\Programe\\VS\\ATM\\Fisiere)已经存在,否则_mkdir会创建失败;如果需要自动创建多层目录,std::filesystem的create_directories(注意复数)可以实现。
  • 运行程序时需要有对应磁盘的写入权限,否则会创建失败。

内容的提问来源于stack exchange,提问作者Alexandru Vrincianu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:01:35