2012-02-16 3 views
1

텍스트 파일에는 숫자가 있지만 경로 폴더도 있습니다 (예 : "C : \ Documents and Settings ......") .txt 파일을 읽으려고합니다.)공백으로 txt 읽기 (C++)

나는 모든 문제와 함께 숫자를 읽을 수 있지만 경로를 읽으려고하면 방금 첫 번째 '공백'이 나타날 때까지 읽습니다. 즉, "C : \ Documents" . 내가 뭘 할 수 있니?

//READING PARAMETERS FROM A .TXT FILE 
//double sigma; double alpha; double tau; 
//double miniter; double maxiter; double q; double m; 
//‘R’ image folder ; ‘T’ image folder; 

// input-file-stream 
// - in = (input) open the file for reading 
ifstream f ("parametros.txt", ifstream::in) ; 

// Error if it is not open properly 
if (!f){ 
    cout<<"ERROR OPENING THE FILE .TXT"<<endl; 
    exit(EXIT_FAILURE); 
} 


char *cadena = new char [100]; 
stringstream folder_T; 
stringstream folder_R; 
int iter = 1; 
while (!f.eof()){ 
    // reading the next line 
    f >> cadena ; 
    if (iter == 1){ 
     sigma = atof(cadena); 
    } 
    else if (iter == 2){ 
     alpha = atof(cadena); 
    } 
    else if (iter == 3){ 
     tau = atof(cadena); 
    } 
    else if (iter == 4){ 
     miniter = atof(cadena); 
    } 
    else if (iter == 5){ 
     maxiter = atof(cadena); 
    } 
    else if (iter == 6){ 
     q = atof(cadena); 
    } 
    else if (iter == 7){ 
     m = atof(cadena); 
    }  
    else if (iter == 8){ 
     folder_T<<gets(cadena);  // Only “C:/Documents” is returned 
    } 
    else if (iter == 9){ 
     folder_R<<gets(cadena);  // Only “C:/Documents” is returned 
    } 

    iter = iter + 1; 

}// fin while 
f.close(); 
+1

switch 문에 대해 들었습니까? 이것을 읽으십시오 http://msdn.microsoft.com/en-us/library/k0t5wee3(v=vs.80).aspx – shift66

+1

['while (! f.eof())'는 거의 항상 틀리다] (http : /www.parashift.com/c++-faq-lite/input-output.html#faq-15.5). 그걸 어디에서 배웠니? –

+0

While-if 패턴을 사용하는 이유를 묻습니다. –

답변

3

cadena으로 전체 라인을 읽지 않습니다. 또한이

getline(f, cadena); 

합니까, 당신은 gets()를 사용 야해. cadena에 이미 전체 라인이 있습니다.

+0

약간 확장 : while (f.getline (cadena, sizeof (cadena)) {...} – stefaanv