2016-03-23 23 views
0
int DataSource::insertData(char* fileName){ 
double vel, tireAngle, timeStamp; 
string inputLine; 
int i=0; 
ifstream inFile; 

inFile.open(fileName); 


if (!inFile.good()) 
{ 
    cout << "Could not open file " << fileName << endl; 
    return 0; 
} 

while(inFile.good()) 
{ 
    getline(inFile, inputLine); 

    if(inFile.fail()) 
    { 
     break; 
    } 

    istringstream lineStream(inputLine); 
    lineStream >> timeStamp >> vel >> tireAngle; 

    source.push_back(Input(vel, tireAngle, timeStamp)); 
    ++i; 
} 

inFile.close(); 

return i; 
}; 

Dosya adını aktarmaya çalışıyorum, dosyayı açıp her satıra ayrışıyorum. Giriş sınıfı üç çifte değeri tutar ve kaynak, Girdi tipi bir vektördür. Std ad alanı ile birlikte vektör, iostream, fstream, string, sstream, #included var.C++ 'da Üye İşlevleri ile Okuma Dosyası

Yani benim ilk konu dosya Birazdan dosya içinde geçirilmekte olduğu biliyoruz açılmıyor alıyorum hatadır.

"Dosya açılamadı input1.txt libC++ abi .dylib: std :: out_of_range türünün yakalanmamış istisnasıyla sonlanıyor:

Vektör için hatayı araştırdım ve sanırım kötü bir vektöre erişiyorum, ya da doğru şekilde başlatılamadım. vektör -Input-source (biçimlendirme alışkanlık "işareti daha büyük, daha az" koymama izin ver) veya yanlış sözdizimini kullanıyorum.

Bu benim ilk gönderiim, bu yüzden bu kötü bir soru/biçimlendirme ise üzgünüm, ancak herhangi bir yardım memnuniyetle karşılanacaktır.

cevap

0

Girişin geçerli olup olmadığını kontrol etmek için good() kullanmanız gerektiğini düşünmüyorum.

if (!inFile.is_open()) 

için

if (!inFile.good()) 

değişen ve

while(getline(inFile, inputLine)) 
için

while(inFile.good()) 
{ 
    getline(inFile, inputLine); 

değiştirmeyi deneyin