比如说我在程序文件main.cpp的4个部分中有这行代码
ifstream fin; fin.open("filename.txt")
但我不想去所有这四个地方更改所有这些文件名。
我怎么能为此创建一个全局变量名?它与filenames.txt有什么不同?
答案 0 :(得分:2)
也许您尝试过这样的全局变量:
const std::string filename = "filename.txt";
然后尝试使用:
初始化ifstream
ifstream fin; fin.open(filename);
它并不适合你。这可能是因为您没有支持2011标准的C ++编译器或库。如果你有这样的编译器,它会工作正常。但是,如果不这样做,则需要将C样式字符串传递给ifstream
构造函数。
ifstream fin; fin.open(filename.c_str());
答案 1 :(得分:1)
我就是这样做的。
传递指定应用程序配置文件路径的命令行参数。当您的应用程序加载时,它会解析此配置文件并保存文件名等项目的所有值。拥有一个类或全局结构,可根据请求存储和提供这些值。例如:
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
答案 2 :(得分:0)
您可以定义全局const变量
const char* fileName = "filename.txt";
或
const std::string fileName = "filename.txt";
全局变量如果不能变异也不错。然后使用:
ifstream fin(fileName);