Чтение текста с пробелами (с ++) - PullRequest
1 голос
/ 16 февраля 2012

Я пытаюсь прочитать файл .txt, в моем текстовом файле есть номера, но также и папки с путями (например, «C: \ Documents and Settings ......»)

IЯ могу читать числа без всяких проблем, но когда я пытаюсь прочитать пути, я просто читаю до первого «пробела», это означает, что я просто читаю в обоих случаях «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 Ответ

3 голосов
/ 16 февраля 2012

Вы не читаете полную строку в cadena. Сделай это

getline(f, cadena);

Кроме того, вы не должны использовать gets(). У вас уже будет полная строка в cadena.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...