Я создал программу с большим тестовым CSV-файлом, и ifstream работает как надо.Затем я открыл файл с помощью Text Edit, вставил только несколько строк большого файла и сохранил второй файл.После нескольких попыток не открывать файл, я обнаружил, что вы должны быть осторожны при сохранении файлов с помощью TextEdit.После того, как я сохранил его как обычный текстовый файл с расширением .csv, он также заработал.У меня проблема, если я открою файл csv в Excel 2011 для Mac и попытаюсь вставить несколько строк в новый файл Excel и сохранить его, если поток не может открыть файл.Я был осторожен, чтобы сохранить его правильно.
Я открыл терминал, и «кошка» перетащила туда файл, и он как будто открывается в середине файла.Есть ли способ решить проблему такого типа с объектом ifstream?возможно, установив флаг, который заставляет ifstream открывать файл вверху?В приложении есть простая функция валидатора, которая считает строки в файле и проверяет заголовок (если таковой существует).Пожалуйста, скажите мне, что я мог бы сделать лучше, чтобы избежать некоторых из этих проблем.Большинство людей, которые в конечном итоге используют этот код, будут использовать утилиты с рабочего стола Mac.
код:
int FileWriter::ableToReadFile(std::string markupURI){
int numberOfLines;
bool headerChk = true;
std::fstream verify;
verify.open(markupURI.c_str());
std::string countingLine;
if(verify.is_open()){
std::getline(verify, countingLine);
//verify to header
std::istringstream iss(countingLine);
size_t pos;
pos = iss.str().find("Time,Team,Sport,City");
if(pos == std::string::npos){//its not there
headerChk = false;
this->setErrorMesssage("Invalid header for a Schedule file");
return 0;
}
iss.clear();
if(headerChk == true){//go ahead and get the number of lines
while (std::getline(verify, countingLine, '\r'))
++numberOfLines;
}
}//end if verify.is_open()
verify.close();
if(numberOfLines > 1){//subtract the header line
numberOfLines --;
return numberOfLines;
}
else {
this->setErrorMesssage("Error Reading File");
return 0;
}
}//end able to read file