swprintf的二个参数问题LPWSTR lpSignal;
CString  m_strReceive, m_str;swprintf(lpSignal, m_strReceive);_____________________________________________________________________
MSDN:
int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );Parameters
buffer Storage location for output. 
format Format-control string. 
argument Optional arguments. 
_____________________________________________________________________问题:
1. LPWSTR 是一个指向宽字符的指针类型 吧?2. 
swprintf(lpSignal, m_strReceive /*这个参数,为什么CString 类型也行? */);swprintf(m_str /*这个参数,为什么CString 类型不行? */, m_strReceive);

解决方案 »

  1.   

    int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );第二个参数是
    const wchar_t * 
    类型,CString 有个LPCWSTR操作符,可以产生LPCWSTR类型,即const wchar_t *类型,所以可以使用CString对句作为参数。而第一个参数是
    wchar_t *
    类型,CString并没有到此类型的转换途径,故参数不被接受。可以使用m_str.GetBuffer(MAX_PATH)来得到
    wchar_t *
    类型,才可以被函数接受。
      

  2.   

    问题:
    1. LPWSTR 是一个指向宽字符的指针类型 吧?
    LPWSTR是wchar_t字符串,也就是unicode编码,就是宽字符2.  
    swprintf(lpSignal, m_strReceive /*这个参数,为什么CString 类型也行? */);
    CString 重载了转换操作, 能转换成LPWSTR 类型,,这是C++的基础啊swprintf(m_str /*这个参数,为什么CString 类型不行? */, m_strReceive);
    CString 第二个参数是常量,可以转换的,第一个参数不是常量,要获得缓冲区。
    swprintf(m_str.GetBuffer(50),……
      

  3.   


    C++ 课本上没讲这些吧?VS MSDN 文档中如何查到这些? (什么关键字查)