以变量作为参数的 remove()
remove() with variable as parameter
我正在尝试使用删除功能通过文件名删除文件。我传递的变量是一个 int,我需要在其末尾添加 .txt
来构造文件名。
这是到目前为止的代码:
void delete_room(int room_number){
char file_name = to_string(room_number) + ".txt";
remove(file_name);
}
但是,当我尝试编译它时,我得到以下内容:
main.cpp:347:10: error: no viable conversion from
'std::__1::basic_string<char>' to 'char'
char file_name = to_string(room_number) + ".txt";
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/string:823:5: note:
candidate function
operator __self_view() const _NOEXCEPT { return __self_view(data(...
^
我相信这是因为它试图将字符串转换为字符?(不过不太确定!
但是,当我尝试显式键入文件名时,例如remove('testing.txt')
它有效。
我尝试制作一个 for 循环来遍历所有内容并将其附加到变量char filepath[]
但这不会编译,因为它不允许我在不立即为其赋值的情况下声明变量。
感谢您的任何帮助!
尝试将file_name
转换为字符串:
string file_name = to_string(room_number) + ".txt";
或:
std::string file_name = to_string(room_number) + ".txt";
编辑:在内森奥利弗的一些好建议之后,试试这个:
remove((to_string(room_number) + ".txt").c_str());
或者,如果你真的需要它作为 var(用于重用或其他什么(,请尝试以下操作:
auto file_name = to_string(room_number) + ".txt";
remove(filename.c_str())
原因是您正在尝试将字符串转换为字符(to_string()
返回字符串(。没有这样的转换,因此,编译器会抛出错误。我 90% 确定你实际上是指string
或char *
(但可能只是一个string
(。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 为什么我需要转换算法 remove() 的参数
- 以变量作为参数的 remove()