从Windows任务栏执行ifstream时出现问题 在64位Windows 7机器上,我在Visual Studio C++ 2012中编写了一个非常简单的程序;它所做的只是使用std::ifstream打开一个文件并打印其内容 int main() { std::ifstream fileStream("Test.txt"); if (!fileStream.is_open()) { cerr<<"Error: "<<strerror(errno)<<endl; } else { std::string testString; getline(fileStream, testString); cout<<testString<<endl; } } intmain(){ std::ifstream fileStream(“Test.txt”); 如果(!fileStream.is_open()){ cerr
从任务栏重新启动应用程序的方式可能是一个实施细节,没有文档记录。固定的应用程序实际上是存储在您的配置文件中的快捷方式。如果此操作中断了您的应用程序,那么如果用户使用类似从Windows任务栏执行ifstream时出现问题 在64位Windows 7机器上,我在Visual Studio C++ 2012中编写了一个非常简单的程序;它所做的只是使用std::ifstream打开一个文件并打印其内容 int main() { std::ifstream fileStream("Test.txt"); if (!fileStream.is_open()) { cerr<<"Error: "<<strerror(errno)<<endl; } else { std::string testString; getline(fileStream, testString); cout<<testString<<endl; } } intmain(){ std::ifstream fileStream(“Test.txt”); 如果(!fileStream.is_open()){ cerr,c++,windows,C++,Windows,从任务栏重新启动应用程序的方式可能是一个实施细节,没有文档记录。固定的应用程序实际上是存储在您的配置文件中的快捷方式。如果此操作中断了您的应用程序,那么如果用户使用类似\yourapp\app.exe的路径手动启动您的应用程序,它也会中断 相对路径相对于工作目录,而不是可执行文件所在的目录 可以通过多种方式设置新进程的工作目录: 它可以从父进程继承 父进程可以在调用CreateProcess/ShellExecute 快捷方式(.LNK)可以指定工作目录 如果要在与.EXE相同的目录中打开文
\yourapp\app.exe的路径手动启动您的应用程序,它也会中断
相对路径相对于工作目录,而不是可执行文件所在的目录
可以通过多种方式设置新进程的工作目录:
- 它可以从父进程继承
- 父进程可以在调用
CreateProcess
/ShellExecute
- 快捷方式(.LNK)可以指定工作目录
如果要在与.EXE相同的目录中打开文件,则应根据GetModuleFileName(0)
的结果构建完整路径(PathRemoveFileSpec
和PathAppend
可能会有所帮助)
如果您永远不打算从命令行接受文件名,则可以在打开文件之前手动更改工作目录。可能工作目录不同?很可能工作目录会更改。如果使用绝对文件路径而不是相对文件路径,会发生什么情况?GetModuleFileName
t他是一个可执行路径,它与当前的工作目录基本无关。@NathanOliver,正如我所说的,它是有效的。@AlgirdasPreidžius为什么在固定时会发生变化?