需要帮助将一些LPCTSTR传递给C ++中的函数

时间:2011-06-30 21:02:47

标签: c++ windows visual-studio-2010

我对C ++很新,并且有一个可能很明显的问题。我可以使用MSDN示例安装服务(http://msdn.microsoft.com/en-us/library/ms682450%28v=VS.85%29.aspx),如果我在一个独立的程序中

我正在尝试将其作为一个函数添加到另一个项目中,并且在传递名称,二进制路径等所需的LPCTSTR字符串时遇到问题。

到目前为止,我已经尝试过:

int Install(LPCTSTR serviceName, LPCTSTR serviceDisplayName, LPCTSTR servicePath);

我知道这是错的,但我很难找到我应该使用的确切内容。即使是指向解释的链接也没问题。谢谢!

3 个答案:

答案 0 :(得分:3)

LPCTSTR是

long pointer to const text string

取决于您是否需要

目标UNICODE / MBCS / ANSI构建
  • const char*(ANSI / MBCS)
  • const wchar_t*(UNICODE)

(来自记忆)

答案 1 :(得分:2)

这是一个支持Unicode或非Unicode构建的示例。请注意,您希望定义UNICODE_UNICODE在Unicode版本中正常工作。在_T宏中包装所有文本字符串。

#include <windows.h>  /* defines LPCTSTR and needs UNICODE defined for wide build. */
#include <stdio.h>
#include <tchar.h>    /* defines _T, _tprintf, _tmain, etc. and needs _UNICODE defined for wide build. */

int Install(LPCTSTR serviceName, LPCTSTR serviceDisplayName, LPCTSTR servicePath)
{
    _tprintf(_T("%s %s %s\n"),serviceName,serviceDisplayName,servicePath);
    return 0;
}

int _tmain(int argc, LPTSTR argv[])
{
    int i;
    LPCTSTR serviceName = _T("serviceName");
    LPCTSTR serviceDisplayName = _T("serviceDisplayName");
    LPCTSTR servicePath = _T("servicePath");

    for(i = 0; i < argc; i++)
        _tprintf(_T("argv[%d] = %s\n"),i,argv[i]);

    Install(serviceName,serviceDisplayName,servicePath);

    return 0;
}

答案 2 :(得分:1)

如果您已经拥有LPCTSTR,那么您只需将该函数称为:

int result = Install(serviceName, serviceDisplayName, servicePath);

LPCTSTR是指向const TCHAR字符串的长指针,因此通常为const char *const wchar_t *,具体取决于您的unicode设置。因此,您可以使用许多常用方法来处理C字符串,以及Microsoft提供的任何方法(我相信MFC有一些字符串类/函数)。