如何在C++中使用变量作为参数调用std::rename实现文件重命名
C++ 动态拼接文件名实现文件重命名方案
错误原因
报错array initializer must be an initializer list or string literal的核心逻辑是:
- C++ 原生char数组仅支持用初始值列表或字符串字面量直接初始化,不支持用字符串拼接表达式作为初始值
- 若参与
+运算的是char*、字符串字面量或数字类型,+运算符实际执行指针/数值加法,不会生成拼接后的字符串,只有std::string类型重载了+运算符实现字符串拼接功能
正确实现代码
所有变量均为std::string类型场景
// 用std::string完成文件名动态拼接 std::string oldname = rocketName + RocketNumber + "R.txt"; std::string newname = NameChoice + NumberChoice + "R.txt"; // 调用c_str()获取const char*类型参数传入std::rename if (std::rename(oldname.c_str(), newname.c_str()) != 0) { perror("Error renaming file"); }
编号为数字类型场景
如果RocketNumber、NumberChoice是int、long等数字类型,先用std::to_string转为字符串再拼接:
std::string oldname = rocketName + std::to_string(RocketNumber) + "R.txt"; std::string newname = NameChoice + std::to_string(NumberChoice) + "R.txt"; if (std::rename(oldname.c_str(), newname.c_str()) != 0) { perror("Error renaming file"); }
补充说明
- std::rename是C++标准库原生跨平台函数,Windows、Linux等主流系统均可直接使用
- 调用前可先校验旧文件是否存在、新文件名是否合法、程序对对应目录是否有读写权限,减少运行异常
内容的提问来源于stack exchange,提问作者NATE BERGLAS
相关产品推荐
相关产品推荐

