#c #string #ifstream
#c #строка #ifstream
Вопрос:
У меня возникла эта простая, но раздражающая проблема.
файл данных ifstream(fileName) работает нормально, если fileName жестко запрограммирован или присваивается через строковую переменную, однако при вводе из аргумента он не может найти файл.
У меня есть следующий код —
//This function will get filenames from a .txt file
//Then call getDataFromFile() with filename as argument
void getFileNames(string dataFileName){
string line;
ifstream dataFile(dataFileName);
if(!dataFile){
cout << "Error! No such file found! Ending Program." <<
endl;
exit(0);
}
while(getline(dataFile,line)){
if(!line.empty()){
getDataFromFile(line);
}
}
}
//**Issue is inside this function**
void getDataFromFile(string fileName){
//Files are under "data/" path -
//To access Jan.csv - "data/Jan.csv"
string filePath = "data/Jan.csv"; //Works
string filePath = "data/" fileName; //Not working - Unable to find file
ifstream dataFile(filePath);
//...Rest of code
}
Ниже приведено содержимое файла .txt
Jan.csv
Feb.csv
Я попытался передать строку как строку c, используя
файл данных ifstream(filePath.c_str());
и все еще не удается найти файл.
Комментарии:
1. Если вы проверяете имя файла во время выполнения, содержит ли оно правильное имя (без недопустимых символов)?
2. Очень вероятно, что есть завершающие новые строки.
3. Являются ли окончания строк в файле .txt правильными для вашей платформы?
4. Спасибо, ребята. Имя файла заканчивается на » r». Обнаружена проблема.
Ответ №1:
Обнаружена проблема. Имя файла заканчивается на » r».
Для новичков c , таких как я, которые используют codeblock —
Вы можете проверить имя файла во время выполнения, установив точки останова и выполнив проверку с консоли отладчика.
1) Установите точки останова, щелкнув в левой части строки, которую вы хотите проверить
2) Запустите отладчик, нажав кнопку отладки вверху «красного цвета».
Комментарии:
1. И знаете ли вы, откуда это
'r'
взялось? (Новые строки Windows r n.) И знаете ли вы, как решить это'r'
, застряв в конце строки? (Открытие текстового файла в текстовом режиме в Windows.)