C++ CString对象始终返回指针值

C++ CString对象始终返回指针值,c++,mfc,C++,Mfc,在VisualStudio2015环境中,我刚刚做了一个简单的Win32控制台应用程序项目来研究MFC。(另外,我检查了在项目向导过程中添加MFC的公共头文件) 这是这个项目的主要部分 #include "stdafx.h" #include "Practice02.h" #ifdef _DEBUG #define new DEBUG_NEW #endif CWinApp theApp; using namespace std; int main() { int nRetCode

在VisualStudio2015环境中,我刚刚做了一个简单的Win32控制台应用程序项目来研究MFC。(另外,我检查了在项目向导过程中添加MFC的公共头文件)

这是这个项目的主要部分

#include "stdafx.h"
#include "Practice02.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CWinApp theApp;

using namespace std;

int main()
{
    int nRetCode = 0;

    HMODULE hModule = ::GetModuleHandle(nullptr);

    if (hModule != nullptr)
    {
        if (!AfxWinInit(hModule, nullptr, ::GetCommandLine(), 0))
        {
            wprintf(L"error: sample\n");
            nRetCode = 1;
        }
        else
        {
            CString temp(L"Hello");
            cout << temp << endl;
        }
    }
    else
    {
        wprintf(L"Fatal Error: GetModuleHandle failure\n");
        nRetCode = 1;
    }

    return nRetCode;
}
#包括“stdafx.h”
#包括“实践02.h”
#ifdef_调试
#定义新调试\u新
#恩迪夫
CWinApp-theApp;
使用名称空间std;
int main()
{
int nRetCode=0;
HMODULE HMODULE=::GetModuleHandle(nullptr);
if(hModule!=nullptr)
{
如果(!AfxWinInit(hModule,nullptr,::GetCommandLine(),0))
{
wprintf(L“错误:样本\n”);
nRetCode=1;
}
其他的
{
CString temp(L“你好”);
不能使用以下内容:

std::wcout << temp.GetString();
std::wcout使用以下内容:

std::wcout << temp.GetString();

std::wcout当您使用定义的
\u UNICODE
编译时,您的字符串很宽,请打印到
wcout
。是的,此项目使用UNICODE设置。并且,我将代码改为“cout I can't mound that.”。对于控制台程序,您可以创建控制台项目。添加
\include
\include”windows.h"
然后您可以使用
CString
和WinAPI函数。您将无法使用其他MFC函数。删除
CWinApp;
,删除
AfxWinInit
…只是为了解释发生了什么:
std::ostream
对几种指针类型有重载。默认情况下,它使用
void const*
重载ch然后打印十六进制格式的地址。现在,尝试找出
CString
转换为哪种类型,例如,通过调试器单步执行它。当您使用
\u UNICODE
定义编译时,您的CString很宽,请改为打印到
wcout
。是的,此项目使用UNICODE设置。并且,我从我不能理解这一点。对于控制台程序,可以创建控制台项目。添加
#include
#include“windows.h”
然后您可以使用
CString
和WinAPI函数。您将无法使用其他MFC函数。删除
CWinApp;
,删除
AfxWinInit
…只是为了解释发生了什么:
std::ostream
对几种指针类型有重载。默认情况下,它使用
void const*
重载ch然后打印十六进制格式的地址。现在,试着找出你的
CString
转换为哪种类型,例如,通过一个调试器对其进行单步调试。这正是我要找的!!谢谢,:)但是,我能问你这个更改如何使对象引用真实值吗@구마왕 在内部,CString有char*或wchar*。GetString返回const wchar\u t*,这与wcout一起工作。这正是我想要的!!谢谢,:)但是,我能问一下这个更改如何使对象引用真实值吗@구마왕 在内部,CString有char*或wchar*。GetString返回const wchar\u t*,这与wcout一起工作。