用c+在桌面上创建文件+; 我知道,在C++中创建一个文件,我们使用下面的代码< /p> #include <iostream> #include <fstream> using namespace std; int main() { ofstream out; out.open("exemple.txt"); return 0; }
使用SHGetSpecialFolderPath函数获取当前用户中的桌面文件夹路径用c+在桌面上创建文件+; 我知道,在C++中创建一个文件,我们使用下面的代码< /p> #include <iostream> #include <fstream> using namespace std; int main() { ofstream out; out.open("exemple.txt"); return 0; },c++,C++,使用SHGetSpecialFolderPath函数获取当前用户中的桌面文件夹路径 这里有一种在Linux上直接实现的方法 string path(getenv("HOME")); path += "/Desktop/example.txt"; ofstream outf(path); 代码的主要问题是“\”是C/C++中的转义字符 因此,当您放置字符串:“C:\Users\David\Desktop”时,斜杠将转义下一个字符,因此它们实际上不是字符串的一部分,而可执行文件得到的是“C:Use
这里有一种在Linux上直接实现的方法
string path(getenv("HOME"));
path += "/Desktop/example.txt";
ofstream outf(path);
代码的主要问题是“\”是C/C++中的转义字符 因此,当您放置字符串:
“C:\Users\David\Desktop”
时,斜杠将转义下一个字符,因此它们实际上不是字符串的一部分,而可执行文件得到的是“C:UsersDavidDesktop”
为了补偿这一点,有两种选择:
- 使用斜杠的转义序列
,这样就得到了:'\\'
“C:\\Users\\David\\Desktop”
- 或者使用
字符分隔路径中的目录。'/'
- 就我个人而言,我更喜欢这个选项,因为它现在可以在所有现代操作系统之间移植。(Win/Linux/MAC)
#包括
int main()
{
std::ofstreamout1(“C:\\Users\\David\\Desktop\\example1.txt”);
std::ofstreamout2(“C:/Users/David/Desktop/example2.txt”);
}
小音符。硬编码桌面目录的路径不是一种好的做法。您将应用程序与该版本的操作系统如何布局文件系统紧密耦合。每个操作系统通常都提供了一种如何查找用户目录的技术。有关更多详细信息,请参阅操作系统文档(或询问有关StackOverflow的其他问题)
另请注意,boost提供了一个文件系统类来抽象所有主要操作系统中的文件系统。了解它的工作原理而不是将文件表示为字符串是很有用的;当您构建复杂的路径(例如带有空格的路径)时,字符串表示可能会稍微容易出错。嵌入其中的字符。提供桌面路径以及open方法中的文件名。“我个人更喜欢这个选项,因为它现在可以在所有现代操作系统之间移植。(Win/Linux/MAC)“我不知道这一点,我真的很高兴我发现了这一点。那会派上用场的,谢谢@Jeremy Kemball:如果使用boost文件系统类,这是抽象的。所以请检查一下。当涉及到路径名时,有许多操作系统/文件系统特定的功能,这绝对值得使用boost系统,因为您将与所有差异隔离开来。我只听说过boost的好东西,所以我也可以。@RishavJain是的
char szPath[MAX_PATH] = {0};
SHGetSpecialFolderPath(NULL,
szpath,
CSIDL_DESKTOPDIRECTORY,
FALSE);
strcat(szPath,"\\Test.txt");
ofstream out;
out.open(szPath);
#include <fstream>
int main()
{
std::ofstream out1("C:\\Users\\David\\Desktop\\exemple1.txt");
std::ofstream out2("C:/Users/David/Desktop/exemple2.txt");
}
char szPath[MAX_PATH] = {0};
SHGetSpecialFolderPath(NULL,
szpath,
CSIDL_DESKTOPDIRECTORY,
FALSE);
strcat(szPath,"\\Test.txt");
ofstream out;
out.open(szPath);