尝试使用一个模板打印3个不同类型的不同数组以分隔文本文件。
这就是我所拥有的:
template <class T>
void givetxt(T *a, const int n)
{
ifstream infile("C:\\.txt", ios::in | ios::app);
for (int i = 0; i<n; i++)
{
infile >> a[i];
}
infile.close();
}
template <class T>
void savetxt(const T *a, const int n)
{
ofstream outfile("C:\\.txt", ios::out | ios::app);
for (int i = 0; i<n; i++)
outfile << a[i] << endl;
outfile.close();
}
int main()
{
const int n1 = 5, n2 = 7, n3 = 6;
int a[n1];
float b[n2];
char c[n3];
givetxt(a, n1);
savetxt(a, n1);
givetxt(b, n2);
savetxt(b, n2);
givetxt(c, n3);
savetxt(c, n3);
现在它将所有数组数据发送到.txt。理想情况下,我可以将其打印到.inttxt
,.floattxt
和.chartxt
。我不知道如何调整infile / outfile以允许其他数组的单独文本文件。我尝试了指针,但模板不允许我将T a*
和const int n
与main
中的变量相关联。推动正确的方向将是最受欢迎的。
答案 0 :(得分:0)
在这种情况下,重载函数(如评论中所说的Artemy Vysotsky)是最好的。
例如:
template<typename T>
void savetxt(T *a, const int n, const char* sFilename)
{
ofstream outfile(sFilename, ios::out|ios::app);
// remaining code to save the file
...
...
...
}
void savetxt(int *a, const int n)
{
savetxt(a, n, "c:\\inttxt.txt");
}
void savetxt(float *a, const int n)
{
savetxt(a, n, "c:\\floattxt.txt");
}
void savetxt(char *a, const int n)
{
savetxt(a, n, "c:\\inttxt.txt");
}