2017-10-04 1 views
-2

하나의 템플릿을 사용하여 텍스트 파일을 분리하여 인쇄하기 위해 다양한 유형의 3 가지 배열을 얻으려고합니다.하나의 템플릿을 사용하여 다른 배열 유형을 다른 텍스트 파일로 보냄 C++

여기에 내가 가진 무엇 :

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을 조정하여 다른 배열에 대한 별도의 텍스트 파일을 허용하는 방법을 모르겠습니다. 나는 포인터를했지만 템플릿은 내가 main에있는 변수에 T a*이나 const int n을 연관시키는 것을 허용하지 않을 것입니다. 올바른 방향으로 밀어주는 것이 가장 큰 도움이 될 것입니다.

+1

방법에 대한 3 개 과부하 기능'savetxt (INT의 *, int)를','savetxt (플로트 *, int)를'와'savetxt (숯불 *, int)를'작성 및 세 번째 매개 변수로 템플릿 함수를 호출하게하십시오 - 파일 이름'void savetxt (T * a, const int n, const char * sFileName)'? –

+0

도움을 주셔서 감사합니다. 이것이 나를 위해 일한 것입니다. 'void savetxt (T * a, const int n, const char * sFileName) { \t ofstream outfile (sFileName, ios :: out | ios :: app); \t for (int i = 0; i

+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"); 
} 
+0

@ Jarod42 제외 할 게시물을 업데이트했습니다

관련 문제