gpt4 book ai didi

c++ - 删除名称为使用字符串变量创建的文件

转载 作者:行者123 更新时间:2023-11-27 23:11:28 26 4
gpt4 key购买 nike

我正在编写一个函数,让用户有机会更改他们的用户名。为此,我试图重命名存储数据的文件。我想出了一种方法来做到这一点,虽然不太奏效,但我认为我已经接近了。

文件名最初是这样创建的——

std::cout << "Please enter a username: ";
std::getline (std::cin, username);

std::ofstream fout (username + ".txt");

效果很好。然后,如果他们以后选择更改用户名

std::cout << "Please type in your new username." << std::endl;
std::getline (std::cin, newUsername);

std::ofstream fout (newUsername + ".txt");
// I copied the contents of username.txt to newUsername.txt here

再次正常工作。

问题出在下面。

问题在于删除原始文件,更具体地说是在添加文件扩展名.txt时

我为 remove() 功能包含了#include并将 .c_str() 添加到用户名,因为我相信 remover () 只会采用 C 字符串 (char*),而不是 C++ 字符串。

remove(username.c_str() + ".txt"); // error expression must have integral or enum type         referring to ".txt".

提前感谢大家的宝贵时间

最佳答案

足够简单

remove((username + ".txt").c_str());

username + ".txt" 的返回值被称为临时值(因为它是一个未命名的值),但没有任何内容表明您不能调用临时对象上的方法(如 c_str)。

关于c++ - 删除名称为使用字符串变量创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com