文件名的全局变量



例如,我的程序文件main.cpp 的4个部分中有这行代码

ifstream fin; fin.open("filename.txt")

但我不想去更改这四个位置的所有文件名。

如何为其创建全局变量名称?它与filenames.txt的工作方式不同吗?

也许您尝试了这样的全局变量:

const std::string filename = "filename.txt";

然后尝试用初始化CCD_ 2

ifstream fin; fin.open(filename);

但它对你不起作用。这可能是因为您没有支持2011标准的C++编译器或库。如果你真的有这样一个编译器,它会工作得很好。但是,如果不这样做,则需要将一个C风格的字符串传递给ifstream构造函数。

ifstream fin; fin.open(filename.c_str());

我会这样做。

传递一个命令行参数,指定应用程序配置文件的路径。当应用程序加载时,它会解析此配置文件,并保存文件名等项的所有值。有一个类或全局结构,可以根据请求存储和传递这些值。例如:

fin.open(AppConfig.get("filename")); // if the AppConfig is a class.
fin.open(AppConfig["filename"]); // if AppConfig was a map like structure.

这种数据驱动的开发是很好的实践。如果你只使用一个文件,你可能只想在文件的开头定义一个常量名称:

const char* FILENAME = "my file.txt"; // or
#define FILENAME "my file.txt"

每次使用常数:

fin.open(FILENAME); // use this repeatedly

您可以定义全局常量变量

const char* fileName = "filename.txt";

const std::string fileName = "filename.txt";

如果全局变量不能变异,那么它们也不错。然后使用:

ifstream fin(fileName);

相关内容

  • 没有找到相关文章

最新更新