以变量作为参数的 remove()

remove() with variable as parameter

本文关键字:remove 参数 变量      更新时间:2023-10-16

我正在尝试使用删除功能通过文件名删除文件。我传递的变量是一个 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% 确定你实际上是指stringchar *(但可能只是一个string(。