Я пытаюсь написать программу, которая перемещает первую строку файла в новый файл. Моя цель состоит в том, чтобы новый файл не был создан, если входной файл не существует. Я получаю его, чтобы читать .good()
, поэтому я получаю сообщение о том, что вход не удался. Однако я не могу заставить новый файл не создаваться.Выходной файл сохраняется, даже если входной файл не существует? **** EDIT ****
Вот код:
int main()
{
fstream inFile;
fstream outFile;;
string fileName("");
string destName("");
cout << "Please enter file name: ";
cin >> fileName;
cout << endl;
cout << "Please enter file name of destination: ";
cin >> destName;
cout << endl;
inFile.open(fileName, ios::in);
outFile.open(destName, ios::out);
getline(inFile, fileName);
if (inFile.good() != true) {
cout << "?Unable to input file!\n" << endl;
return 0;
}
else {
outFile << fileName << endl;
return 0;
}
if (outFile.good() == true) {
cout << "?File '" << destName << "' already exists!\n" << endl;
return 0;
}
inFile.close();
outFile.close();
return 0;
}
Может кто-нибудь помочь?
Заранее спасибо.
Спасибо за помощь ранее,
***** ***** EDIT
мне интересно сейчас, хотя. Если выходной файл уже существует, я хочу сделать заявление об ошибке, говорящее так. Однако, если файл существует или не существует, я все равно получаю сообщение об ошибке. Я попытался переместить outFile.open на дно, чтобы файл был создан до проверки, но он все еще говорит, что он уже существует?
int main()
{
fstream inFile;
fstream outFile;;
string fileName("");
string destName("");
cout << "Please enter file name: ";
cin >> fileName;
cout << endl;
inFile.open(fileName, ios::in);
getline(inFile, fileName);
if (inFile.good() != true) {
cout << "?Unable to input file!\n" << endl;
return 0;
}
cout << "Please enter file name of destination: ";
cin >> destName;
cout << endl;
if (outFile.good() == true) {
cout << "?File '" << destName << "' already exists!\n" << endl;
return 0;
}
outFile.open(destName, ios::out);
outFile << fileName << endl;
inFile.close();
outFile.close();
return 0;
}
открыть FILESTREAM назначения Только тогда, когда вы собираетесь писать в него, в противном случае файл будет создан в любом случае. – NaCl
'outFile.open (destName, ios :: out);' Посмотрите на свой код. Это создает выходной файл. – PaulMcKenzie
Ах, неудивительно. Спасибо вам, ребята! Я просто вошел в класс C++, поэтому я ценю учения. – ryanpback