我知道要用c ++创建文件,我们使用以下代码
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream out;
out.open("exemple.txt");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题如下,我想在桌面或其他目录中创建example.txt文件.为了简化它,我们现在就拿桌面吧.
请帮我怎么做?
像这样?
out.open("example.txt","C:\Users\David\Desktop");
Run Code Online (Sandbox Code Playgroud)
代码的主要问题是'\'是C/C++中的转义字符.
所以当你输入字符串时:"C:\Users\David\Desktop"斜杠正在转义下一个字符,因此它们实际上并不是字符串的一部分,可执行文件得到的是"C:UsersDavidDesktop"为了弥补这一点,有两种选择:
'\\'从而为您提供:"C:\\Users\\David\\Desktop"'/'字符分隔路径中的目录.
您的第二个问题是您正在使用打开错误.只需将路径名称指定为1个长字符串(这称为绝对路径).我个人更喜欢将文件名提供给构造函数而不是显式调用open(但这只是个人偏好的事情).
#include <fstream>
int main()
{
std::ofstream out1("C:\\Users\\David\\Desktop\\exemple1.txt");
std::ofstream out2("C:/Users/David/Desktop/exemple2.txt");
}
Run Code Online (Sandbox Code Playgroud)
小调.硬编码桌面目录的路径不是好习惯.您正在将应用程序紧密地耦合到该版本的OS如何布局文件系统.每个操作系统通常都提供了一种如何查找用户目录的技术,请参阅操作系统文档以获取更多详细信息(或在StackOverflow上询问另一个问题).
另请注意,boost提供了一个文件系统类来抽象所有主要操作系统的文件系统.它有助于了解它是如何工作的,而不是将文件表示为字符串; 当您构建复杂路径(例如,带空格的路径)时,字符串表示可能会略微出错.嵌入其中的字符.
这是在Linux上执行此操作的直接方式.
string path(getenv("HOME"));
path += "/Desktop/example.txt";
ofstream outf(path);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11823 次 |
| 最近记录: |