gpt4 book ai didi

c++ - 如何命名某个目录下的文本文件?

转载 作者:行者123 更新时间:2023-11-28 06:41:09 25 4
gpt4 key购买 nike

好的,谢谢Wug的回答!我更改了我的代码,但现在它在提示:

no matching function for call to

std::basic_ofstream::basic_ofstream(std::basic_string)

我不确定它有什么不同,但我会发布我所有的代码,到目前为止还没有那么多。从现在开始,我会尽量保持清洁。

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

int main()
{ /*Introduction*/
SetConsoleTitle("Journal");

string action, prom0, filename, filepath;
filepath = "C:\\Users\\-\\Desktop\\Projects\\Journal Project\\Logs\\";
cout << "Hi and welcome to Journal! \nHere you can write down your day.\nWrite help for";
cout << "more \nType command to start: ";
/*Choose Action*/
cin >> action;
if (action == "new")
{system("cls");
/*Make new Journal file*/
cout << "Filename: ";
getline(cin, filename);
mkdir("C:\\Users\\-\\Desktop\\Projects\\Journal Project\\Logs");
ofstream journallogs(filepath + filename);
journallogs.close();
}
else {
cout << "Wrong command\n";
};
return 0;}

最佳答案

有两处错误。第一个是编译器的提示:

ofstream journallogs("C:\\Users\\-\\Desktop\\Projects\\Journal Project\\Logs\\" + getline(cin, filename), ios::out);

std::getline(istream&, string&)返回istream&,不能在istream<中添加char */。我建议看看 documentation for getline() ,这可能会帮助您更好地理解应该如何使用它。这里有一个例子:

string filepath = "C:\\Users\\-\\Desktop\\Projects\\Journal Project\\Logs\\";
string filename;
getline(cin, filename);
ofstream journallogs(filepath + filename);

第二个问题是在调用 getline() 之前,您正在从 cin 读取到 filename。当您调用 getline() 时,filename 的任何内容都会被删除,因此您将有效地删除文件名的第一个单词,这可能不是您想要的.要解决此问题,请删除无关的 cin >> filename;

注意:缩进很重要,可以帮助您阅读自己的代码。努力让您的代码看起来更漂亮。

关于c++ - 如何命名某个目录下的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925934/

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