需要帮助使用变量和字符串组合
使用infile.open()打开文件ifstream infile;
infile.open("data_x.txt");
我需要这样的东西,但data_X.txt中的X必须是可以更改的变量。
答案 0 :(得分:3)
使用C ++,您可以使用字符串流
std::ostringstream file_name;
file_name << "data_" << somevar;
infile.open(file_name.str());
答案 1 :(得分:0)
我不知道我是否理解你的问题。你需要打开一个名为“something_X.txt”的文件,但是有可能用某个变量的值替换“X”吗?如果是这样的话:
template <typename T>
ifstream read_file(const char* baseName, const T& value, const char* extension)
{
std::ostringstream file_path; // Here we will assemble our name
file_path<<baseName<<value<<extension; // Add baseName, value and extension.
ifstream file_handle(file_path.str()); // Open the file.
if(!file_handle)
{
//This file doesn't exist! Notify user in some way.
}
return file_handle; // Return handle to file we have opened.
}
现在你可以做到:
file_1 = read_file("data_", 5, ".txt"); //Opens "data_5.txt"
file_2 = read_file("personal", "info", ".ini"); //Opens "personalinfo.ini"
我提供了一个更通用的解决方案,因此您可以自定义名称的常量前缀(在特定情况下为“data_”)和文件扩展名。示例:此循环将打开“texture_1.jpg”,“texture_2.jpg”,...,“texture_10.jpg”。
const char* base_name = "texture_";
const char* extension = ".png";
for(int i = 1; i <= 10; ++i)
{
ifstream tex_file = read_file(base_name , i, extension);
//read data from this file
tex_file.close();
}
由于函数是模板化的,你可以使用任何类型为T的变量,其中有一个有效的运算符&lt;&lt;(ostringstream&amp;,const T&amp;) - 所有内置类型都满足这个要求。详情请点击此处:cplusplus.com: operator<<。