如何在 C++ 中将文件保存到桌面?

编程入门 行业动态 更新时间:2024-10-11 01:15:16
本文介绍了如何在 C++ 中将文件保存到桌面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

我想找到一种将文件保存到桌面的方法.由于每个用户都有不同的用户名,我发现以下代码可以帮助我找到其他人桌面的路径.但是如何将以下内容保存到桌面?file.open(appData +"/.txt"); 不起作用.你能给我举个例子吗?

I want to find a way to save a file to a desktop. Since every user has different user name, I found following code will help me find the path to someone else’s desktop. But how can I save the following to desktop? file.open(appData +"/.txt"); doesn't work. Can you please show me an example?

#include <iostream>
#include <windows.h>
#include <fstream>
#include <direct.h>
#include <shlobj.h>
using namespace std;
int main ()
{
    ofstream file;  

    TCHAR appData[MAX_PATH];
    if (SUCCEEDED(SHGetFolderPath(NULL,
                                  CSIDL_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE,
                                  NULL,
                                  SHGFP_TYPE_CURRENT,
                                  appData)))

    wcout << appData << endl; //This will printout the desktop path correctly, but
    file.open(appData +"file.txt"); //this doesn't work
    file<<"hello\n";
    file.close();
    return 0;
}

Microsoft Visual Studio 2010、Windows 7、C++ 控制台

Microsoft Visual Studio 2010, Windows 7, C++ console

更新:

#include <iostream>
#include <windows.h>
#include <fstream>
#include <direct.h>
#include <shlobj.h>
#include <sstream> 
using namespace std;
int main ()
{
    ofstream file;  

    TCHAR appData[MAX_PATH];
    if (SUCCEEDED(SHGetFolderPath(NULL,
                                  CSIDL_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE,
                                  NULL,
                                  SHGFP_TYPE_CURRENT,
                                  appData)))

    wcout << appData << endl; //This will printout the desktop path correctly, but
    std::ostringstream file_path; 
    file_path << appData << "\\filename.txt";//Error: identifier file_path is undefined

    file.open(file_path.str().c_str()); //Error:too few arguments in function call
    return 0;
}

推荐答案

您不能使用 appData +"/.txt" 连接 TCHAR 数组.使用 stringstream 构造路径并从中提取文件的完整路径:

You cannot concatenate TCHAR array using appData +"/.txt". Use a stringstream to construct the path and extract the full path of the file from it:

#include <sstream>

...

std::ostringstream file_path;
file_path << appData << "\\filename.txt";

file.open(file_path.str().c_str());

对于我使用 VS2010,以下编译并正确执行:

The following compiles, and executes correctly, for me with VS2010:

#include <iostream>
#include <windows.h>
#include <fstream>
#include <direct.h>
#include <shlobj.h>
#include <sstream>
#include <tchar.h>
using namespace std;
int main ()
{
    ofstream file;  

    TCHAR appData[MAX_PATH];
    if (SUCCEEDED(SHGetFolderPath(NULL,
                                  CSIDL_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE,
                                  NULL,
                                  SHGFP_TYPE_CURRENT,
                                  appData)))

    wcout << appData << endl;
    std::basic_ostringstream<TCHAR> file_path;
    file_path << appData << _TEXT("\\filename.txt");

    file.open(file_path.str().c_str());
    file<<"hello\n";
    file.close();

    return 0;
}

这篇关于如何在 C++ 中将文件保存到桌面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-27 15:15:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1157122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中将   桌面   文件   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!