【问题标题】:sending different array types to different textfiles using one template c++使用一个模板 C++ 将不同的数组类型发送到不同的文本文件
【发布时间】:2017-10-04 03:56:06
【问题描述】:

尝试使用一个模板将 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 nmain 中的变量相关联。我们将不胜感激朝着正确的方向前进。

【问题讨论】:

  • 如何编写 3 个重载函数 savetxt(int*, int)savetxt(float*, int)savetxt(char*, int) 并使用第三个参数 - 文件名 void savetxt(T *a, const int n, const char* sFileName) 调用您的模板函数?
  • 非常感谢您的帮助,这就是最终为我工作的原因。 void savetxt(T *a, const int n, const char* sFileName) { ofstream outfile(sFileName, ios::out | ios::app); for (int i = 0; i&lt;n; i++) outfile &lt;&lt; a[i] &lt;&lt; endl; outfile.close(); } savetxt(b, n2, "C:\\Text files\\float.txt"); savetxt(a, n1, "C:\\Text files\\int.txt");
  • 好吧,代码在 cmets 中并没有那么好,但它运行良好,感谢您的时间。

标签: c++ arrays templates text-files


【解决方案1】:

在这种情况下,重载函数(如 cmets 中的 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");
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多