我在一个WinUI3项目中使用c++/winrt,我试图让应用程序拉出一个文本文件,用户可以从中选择一个选项。我试图到达的文件在项目文件夹中,并包含在项目中。目前,我已将文件路径设置为我的设备,以便它从我的目录中提取文本文件。我希望应用程序能够从程序文件中读取,而不是当前编码的长文件路径。我试图更改文件的相对路径,并使用fstream函数读取文件。我也试过使用“飞机/飞机. that”,但也没用。
下面是代码的一个片段。
fstream aircraftFile;
string info;
void MainWindow::loadPlatformData()
ifstream aircraftFile; //File Object for list
aircraftFile.open("C:\\Users\\TimmyK\\Documents\\GitHub\\sentinel3\\Sentinel3\\Aircrafts\\Aircrafts.txt", ios::in);发布于 2022-03-03 04:34:44
我的猜测是,您正在编写一个UWP项目,这就是为什么对您文件的完全路径访问失败的原因。UWP限制了每个Microsoft对文件系统的访问。
对于UWP项目,在文件属性中将文件标记为Content Yes,以便将其放置到应用程序的布局包中。通常,“当前工作目录”指向打包程序的安装位置。您可以使用以下方法获得到此目录的完整路径:
auto installdir = Windows.ApplicationModel::Current().InstalledLocation();
std::wstring str = installdir.Path().c_str();对于Win32“经典”桌面应用程序,没有特定的打包或安装解决方案,因此有很多不同的方法。在Visual中,启动调试器或运行程序时,“当前工作目录”将是项目目录,但如果从命令行运行EXE,则它将位于另一个目录中。
要查找每个IInspectable正在运行的EXE目录,请使用GetModuleFileName
wchar_t exePath[MAX_PATH] = {};
DWORD nc = GetModuleFileNameW(nullptr, exePath, MAX_PATH);
if (nc > MAX_PATH || nc == 0)
{
// Error condition
}一个典型的模式是查看EXE文件夹,然后“遍历”目录查找资产文件。这是我们在DirectX示例中为Win32做的大量工作。见FindMedia。
https://stackoverflow.com/questions/71272949
复制相似问题