c++ ofstream write_to_log.open("相对路径+数组");
c++ ofstream write_to_log.open (" relative path + array");
我希望下面的行使用数组中给定的内容写入一个新文件
但进入名为 logs
:
的新文件夹
char log_file_name[100]; /* this array contains the name of a new file */
ofstream write_to_log;
write_to_log.open (relative path, log_file_name , fstream::app);
如何让它工作?
您可以使用 CreateDirectory
在 Windows 中使用 VC++ 创建文件夹。
#include <windows.h>
#include <string>
#include <fstream>
using namespace std;
int main() {
string path = "C:\users\folder";
CreateDirectory(path.c_str(), NULL);
char log_file_name[100] = "log.txt";
path += '\';
path += log_file_name;
ofstream write_to_log(path.c_str(), fstream::app);
return 0;
}
NULL
指的是您可能必须创建的安全属性结构。 MSDN here and in this 答案中的更多详细信息。
你可以省去很多潜在的麻烦,用std::string log_file_name;
替换char log_file_name[100];
string的好处很多,这里最重要的是他们调整大小和追加真的很容易。字符串可以完成 char 数组所做的一切,还有很多额外功能。在几乎所有情况下,您都应该选择字符串而不是字符数组。
string path;
string log_file_name;
路径和文件名为字符串
path += "\" + log_file_name
ofstream write_to_log(path, fstream::app);
if (write_to_log)
{ // file is open and looks writable (have to start writing to be sure)
// do stuff. Or not. It's a free country.
}
else
{ // file didn't open
// Handle error
}
全部完成,文件(如果存在且可写)已打开并准备就绪。使用流时始终检查流的状态。 SO 充斥着那些没有问过并对结果感到困惑的人的问题。
在较旧的编译器上,您可能需要稍微更改创建和打开行:
ofstream write_to_log(path.c_str(), fstream::app);
我希望下面的行使用数组中给定的内容写入一个新文件
但进入名为 logs
:
char log_file_name[100]; /* this array contains the name of a new file */
ofstream write_to_log;
write_to_log.open (relative path, log_file_name , fstream::app);
如何让它工作?
您可以使用 CreateDirectory
在 Windows 中使用 VC++ 创建文件夹。
#include <windows.h>
#include <string>
#include <fstream>
using namespace std;
int main() {
string path = "C:\users\folder";
CreateDirectory(path.c_str(), NULL);
char log_file_name[100] = "log.txt";
path += '\';
path += log_file_name;
ofstream write_to_log(path.c_str(), fstream::app);
return 0;
}
NULL
指的是您可能必须创建的安全属性结构。 MSDN here and in this 答案中的更多详细信息。
你可以省去很多潜在的麻烦,用std::string log_file_name;
替换char log_file_name[100];
string的好处很多,这里最重要的是他们调整大小和追加真的很容易。字符串可以完成 char 数组所做的一切,还有很多额外功能。在几乎所有情况下,您都应该选择字符串而不是字符数组。
string path;
string log_file_name;
路径和文件名为字符串
path += "\" + log_file_name
ofstream write_to_log(path, fstream::app);
if (write_to_log)
{ // file is open and looks writable (have to start writing to be sure)
// do stuff. Or not. It's a free country.
}
else
{ // file didn't open
// Handle error
}
全部完成,文件(如果存在且可写)已打开并准备就绪。使用流时始终检查流的状态。 SO 充斥着那些没有问过并对结果感到困惑的人的问题。
在较旧的编译器上,您可能需要稍微更改创建和打开行:
ofstream write_to_log(path.c_str(), fstream::app);