一个网络程序用到了一个函数
retval = send(conn_socket,cBuffer,m_send.GetLength(),0);
但是第2个参数 需要char
但是在evc中我的这个参数是Tchar
现在只要把Tchar转换城char就ok了
能把代码发出来吗?

解决方案 »

  1.   


    #if !define(UNICODE) && !defined(_UNICODE)
        直接转换
    #else
        WideCharToMultiByte
    #endif
      

  2.   

    能详细点吗?
    char cBuffer[1000];
    tchar Buffer[1000];
    用这2个变量
    谢谢 我新手
      

  3.   

    非unicode直接就能用,
    unicode用 WideCharToMultiByte 
    或者用wcstombs#include <stdio.h>
    #include <stdlib.h>int main( void )
    {
       int      i;
       char    *pmbbuf   = (char *)malloc( MB_CUR_MAX );
       wchar_t *pwchello = L"Hello, world.";   printf( "Convert wide-character string:\n" );
       i = wcstombs( pmbbuf, pwchello, MB_CUR_MAX );
       printf( "\tCharacters converted: %u\n", i );
       printf( "\tMultibyte character: %s\n\n", pmbbuf );
       return 0;
    }
      

  4.   

    发送的缓冲区,只要给个指针就可以了,和编码没有关系;关键是长度,要用计算字节数的函数而不是计算字符数的函数:
    _tcsclen()计算字符数,_tcsnbcnt()计算字节数。
      

  5.   

    TCHAR char转换2007-06-12 15:16CString strData = _T("ni hao");int len = WideCharToMultiByte(CP_ACP, 0, strData, -1, NULL, 0, NULL, NULL);     char* szTarget = new char[len + 1];     memset(szTarget, 0, len + 1);     WideCharToMultiByte (CP_ACP, 0,strData, -1, szTarget, len, NULL,NULL);delete[] szTarget;CString->TCHAR*的转化可以用函数GetBuff()函数原型为:LPTSTR GetBuffer( int nMinBufLength );CString str("CString");TCHAR* szMsg = new TCHAR[100];//其参数为CString字符串的长度szMsg = str.GetBuffer(str.GetLength());str.ReleaseBuffer();delete []szMsg;szMsg = NULL;TCHAR*->CString的转化TCHAR szTchar[18] = L"TCHAR";  CString str;  str.Format(_T("%s"),szTchar);  
     
    根据这个就ok了 
      

  6.   

    支持4楼的说法,你收的时候也是用TChar收就行了,根本不用关心转换的问题,发送的时候传一个正确的字节数就行了
      

  7.   

    6楼,TCHAR 不等于wchar_t!具体看1楼的