Вывести значение указателя - PullRequest
2 голосов
/ 24 января 2011

Я делаю поток, но я не знаю, как распечатать значение указателя.

UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
    data *ptr = (data*)pParam;
    AfxMessageBox(L"You have entered a thread function.");
    ptr->a = "abc12345";       // char * a
    AfxMessageBox(???);        // what should i put here to print out the value of a?

    return 0;
}

Ответы [ 3 ]

3 голосов
/ 24 января 2011

Может быть что-то вроде этого:

CString a;
a.Format(_T("%p"), ptr->a);
AfxMessageBox(a);

Изменить: чтобы получить значение 'ptr-> a' указывает на:

a.Format(_T("%s), ptr->a);
1 голос
/ 24 января 2011

Используйте функцию swprintf , чтобы создать строку C с текстом, а затем распечатать ее.Рассмотрим этот пример:

UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
    data *ptr = (data*)pParam;
    AfxMessageBox(L"You have entered a thread function.");

    ptr->a = "abc12345";       // char * a

    wchar_t buf[ 1024 ];
    swprintf( buf, "ptr->a points to %p", ptr->a );
    AfxMessageBox(buf);        

    return 0;
}
1 голос
/ 24 января 2011

Я верю

ptr->a

Но это полностью зависит от API AfxMessageBox.

Edit: похоже, что AfxMessageBox ожидает LPCTSTR, который является ничем иным, как const char *.

LPCTSTR lpStr = (LPCTSTR)ptr->a;

Это должно помочь, если ваш компилятор не преобразует автоматически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...