C++ 将std::strings转换为WCHAR*和char*

C++ 将std::strings转换为WCHAR*和char*,c++,string,char,type-conversion,filepath,C++,String,Char,Type Conversion,Filepath,我正在尝试创建一个资源管理器,它告诉您基于关键字的文件的位置。我试图在Directx11编程代码中实现它,但遇到了一些问题。代码调用WCHAR*和char*文件路径。我用std::string格式编写了文件路径 char* ResourceManager::getFilePathCHAR(string reference){ string location; //looks through a file and gives the folder location = pa

我正在尝试创建一个资源管理器,它告诉您基于关键字的文件的位置。我试图在Directx11编程代码中实现它,但遇到了一些问题。代码调用
WCHAR*
char*
文件路径。我用std::string格式编写了文件路径

char* ResourceManager::getFilePathCHAR(string reference){
    string location;
    //looks through a file and gives the folder
    location = parser(reference);
    string result;
    //adds the other stuff like c:// ........../image.png
    result = appender(location, reference);
    m_filePathChar = new char[result.length() + 1]; ////--|
    strcpy(m_filePathChar, result.c_str());         ////--|-> part im looking at
    return m_filePathChar;                          ////--|
}

问题是,我读到的其他信息告诉我,像这样的返回指针是不好的,所以我只想知道是否有更好的方法?另外,如何将
std::string
转换为
WCHAR*
。我可能没有足够努力地寻找,但我检查过的大多数地方都给了我有关
wchar\u t
的信息。我对指针还比较陌生,所以我不确定你能做什么和不能做什么的确切规则。感谢您的帮助和输入。

WCHAR
只是
WCHAR\u t
的一个typedef;您对
wchar\u t
转换的引用应适用。返回动态分配的数组会导致内存泄漏。在您的情况下,最好同时生成m_filePathChar std::string并只返回m_filePathChar.c_str()。要将wchar_t转换为wsrting,请再次使用c_str()。@MucgaekNastenko哦,好的,我明白了,所以我只返回字符串,然后稍后将其转换为指针?