等待解惑_在桌面上生成一个txt文件,该如何处理

等待解惑_在桌面上生成一个txt文件
在桌面上生成一个txt文件,最近学c++的时候,有些疑惑,如果在桌面上生成一个txt文件,那么,代码中保存地址设置成才"C://users//administrator//desktop"的地址,然后,文件确实生成了,但是并没有在我的桌面上,原因是,我更改了用户名是叫clover,不是administrator,文件被生成在administrator目录下的desktop里了而非我当前的我当前用户目录下的desktop,如果把输出地址改成...clover//desktop的话,就可以顺利在桌面生成,
但是问题是,我不可能预测到别的电脑上是否更改用户名称,也不知道到底改成什么,原谅我问这么傻的问题,
我想应该有一些其他的方法可以完成这样的操作,而不是像我这样做~~,麻烦点拨一下我吧,这里先谢过了~~
——cloverever



------解决方案--------------------
windows上有系统api支持读取用户的默认路径。其中包括我的文档,我的收藏,桌面之类的路径
------解决方案--------------------

我教你。

C/C++ code

#include <iostream>
using namespace std;

#include <windows.h>
#include <shlobj.h>

int main()
{
    char path[ MAX_PATH ];
    if (SHGetFolderPathA( NULL, CSIDL_PROFILE, NULL, 0, path ) != S_OK)
    {
        cout << "I could not retrieve the user's home directory!\n";
    }
    else
    {
        cout << "Home directory = \"" << path << "\"\n";
    }

    if (SHGetFolderPathA( NULL, CSIDL_LOCAL_APPDATA, NULL, 0, path ) != S_OK)
    {
        cout << "I could not retrieve the user's application data directory!\n";
    }
    else
    {
        cout << "Application data directory = \"" << path << "\"\n";
    }

    return 0;
}

------解决方案--------------------
先获取桌面路径!好像是下面那个,你在查查API吧!
TCHAR path[255];
SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,0)
------解决方案--------------------
楼主别慌 山人自有妙计SHGetFolderPathA去MSDN查用法