我一直在编写一个C++程序,最终将从文本文件中删除某些不需要的格式。不幸的是,我还远远达不到这个目标。C++在用户输入的不同目录中打开文件
我目前的问题是我似乎无法打开位于给定(用户输入)目录中的文本文件。下面是我在哪里到目前为止,剥离最不需要的大头:
//header, main function, bulk
//variable definitions
FILE * pFile;
//char filePathBuffer [512]; --unused, from older attempts
string currentLine = "", command = "", commandList = "ct", filePath = "defaultPath";
int quotePos = 0, slashPos = 0, bufferLength = 0;
bool contQuote = true, contSlash = true;
cout << "> ";
getline(cin, command);
//various exit commands
while(command != "q" && command != "quit" && command != "exit") {
//check for valid commands stored in a string
//--definitely not the best way to do it, but it's functional
if(commandList.find(command) == commandList.npos) {
puts("\nPlease enter a valid command.\n");
}
else if(command == "t") {
puts("\nPlease enter the file path:\n");
cout << "> ";
getline(cin, filePath);
//rip all quotes out of the entered file path
while(contQuote == true) {
quotePos = filePath.find("\"");
if(quotePos == filePath.npos)
contQuote = false;
else
filePath.erase(quotePos, 1);
}
pFile = fopen(filePath.c_str(), "r+");
//I've also tried doing countless variations directly in the code,
//as opposed to using user-input. No luck.
//pFile = fopen("C:\\test.txt", "r+");
if(pFile!=NULL) {
cout << "\nFile opened!" << endl << endl;
fclose (pFile);
}
else
cerr << "\nFile failed to open!\n\n";
}
//reset variables to default values
quotePos = -1;
slashPos = -1;
contQuote = true;
contSlash = true;
cout << "> ";
getline(cin, command);
}
我没有实际确认输入的字符串是否应该有报价或不 - 我不能让他们的工作无论哪种方式。我也尝试做一个filePath.find('\\')来查找反斜杠(这样我就可以在filePath中添加第二个反斜杠以进行正确的解析),但最终没有运气。
你们有什么想法我可以解决这种情况吗?
谢谢!
您正在使用哪个平台? – FailedDev
Windows 7 64位。 –
然后我的解决方案应该工作:) – FailedDev