首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c++中的桌面上创建文件

在c++中的桌面上创建文件
EN

Stack Overflow用户
提问于 2010-07-29 13:12:54
回答 4查看 13.9K关注 0票数 6

我知道要在c++中创建一个文件,我们使用以下代码

代码语言:javascript
运行
复制
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream out;
    out.open("exemple.txt");
    return 0;
}

我的问题如下,我想在桌面上或其他目录中创建example.txt文件。为了简化它,让我们先以桌面为例。

请帮帮我怎么做?

是像这样吗?

代码语言:javascript
运行
复制
out.open("example.txt","C:\Users\David\Desktop");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-29 13:49:20

代码的主要问题是“\”是C/C++中的转义字符。

所以当你放入字符串:"C:\Users\David\Desktop"时,斜杠将转义下一个字符,因此它们实际上不是字符串的一部分,可执行文件得到的是"C:UsersDavidDesktop"来补偿这一点,有两种选择:

"C:\\Users\\David\\Desktop"

  • Or使用转义序列来表示斜杠

  • ,因此给出了:"C:\\Users\\David\\Desktop"

  • Or使用'/'字符来分隔路径中的目录。
  • 我个人更喜欢这个选项,因为它现在可以在所有现代操作系统之间移植。(Win/Linux/MAC)

你的次要问题是你没有正确地使用开放。只需将路径名指定为1长字符串(这称为绝对路径)。就我个人而言,我更喜欢将文件名提供给构造函数,而不是显式地调用open (但这只是个人喜好)。

代码语言:javascript
运行
复制
#include <fstream>
int main()
{
    std::ofstream out1("C:\\Users\\David\\Desktop\\exemple1.txt");

    std::ofstream out2("C:/Users/David/Desktop/exemple2.txt");
}

一个次要的音符。对桌面目录的路径进行硬编码不是一个好的做法。您将应用程序与该版本的操作系统的文件系统布局紧密地耦合在一起。每个操作系统通常都提供了一种如何查找用户目录的技术。有关详细信息,请参阅您的操作系统文档(或在StackOverflow上询问其他问题)。

还请注意boost提供了一个文件系统类来抽象所有主流操作系统上的文件系统。了解它是如何工作的很有用,而不是将文件表示为字符串;当您构建复杂的路径(例如带有空格的路径)时,字符串表示可能会稍微出错。嵌入其中的字符。

票数 10
EN

Stack Overflow用户

发布于 2010-07-29 13:19:33

在Linux上有一种简单的方法可以做到这一点。

代码语言:javascript
运行
复制
string path(getenv("HOME"));
path += "/Desktop/example.txt";
ofstream outf(path);
票数 5
EN

Stack Overflow用户

发布于 2010-07-29 13:18:18

使用SHGetSpecialFolderPath函数获取当前用户http://msdn.microsoft.com/en-us/library/bb762204%28VS.85%29.aspx中的桌面文件夹路径

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3359627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档