1 我如果采用UNICODE模式编译TCP/IP应用程序(基于SOCKET开发的),
  但是服务器上的应用是16位的,例如WEB/ASP,
  我怎么将UNICODE转成ANSI(ASCII)发送,我看了一些程序,发现都是使用
   USE CONVERSION
   T2A(XXXXXXXX)
   A2W(XXXXXXXX)
   或者再加个WIDECHARTOMULTIBYTE( ),
   但是始终没有明白USE和T2X这2个宏究竟是什么作用?
   看了MSDN里太简单了,没弄明白。
2 当我用SOCKET写个程序发送一个字符串出去时,
  例如:
  CString ss;
  ss="abc%12,this is a test! %d";
  我写了一个封装的函数SEND(LPCTSTR SS, SOCKET S)
当我用
   SEND("abc%12,this is a test! %d",S)时没有错误发生。
   可是用SEND(ss,S)出现了非法操作,为什么?
   这里ss已经被强制转成了LPCTSTR,为什么会出错呢?
   如何解决?
3 如何用WINSOCK编程读取网络邻居里一台电脑上的共享文件呢?(WIN SOCK 2)
  加了密码的。
4 如何让我自己的程序出现ANSI UNICODE编译选择呢?
  正常只有DEBUG和RELEASE2种,如何添加。

解决方案 »

  1.   

    1.
    不需要考虑那么多吧,还是象以前那样定义缓冲区,往里面規数据
    至少 sprintf 和 swprintf 就不一样了
    其实 Unicode 和 Ansi 的问题处理起来真的不象想象的那么麻烦
      

  2.   

    USE_CONVERSIONS宏:
        用于初始化用于转换的数据区(是在堆栈中分配的)字符串类型:
    T:取决于_UNICODE符号有没有定义(也就是工程是否是Unicode的),若定义了,TCHAR就是
    wchar_t,否则就是wchar
    W:WCHAR就是wchar_t,等于OLECHAR
    A:CHAR就是char
    这样,T2W(x)就是将一个LPTCHAR转换为LPWCHAR的宏,其他情况类似