// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//#pragma once#include "targetver.h"#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <string>// TODO: 在此处引用程序需要的其他头文件
typedef basic_string<_TCHAR, char_traits<_TCHAR>, allocator<_TCHAR> > _tstring;
/*
#ifdef _UNICODE
 typedef wstring _tstring;
#else
 typedef string _tstring;
#endif
*/
编译的时候产生这个错误:
------ 已启动全部重新生成: 项目: QYCNGFtpSrv, 配置: Debug Win32 ------
正在删除项目“QYCNGFtpSrv”(配置“Debug|Win32”)的中间文件和输出文件
正在编译...
stdafx.cpp
d:\work\vc\qycngftpsrv\qycngftpsrv\stdafx.h(16) : error C2143: 语法错误 : 缺少“;”(在“<”的前面)
d:\work\vc\qycngftpsrv\qycngftpsrv\stdafx.h(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
生成日志保存在“file://d:\WORK\VC\QYCNGFtpSrv\QYCNGFtpSrv\Debug\BuildLog.htm”
QYCNGFtpSrv - 2 个错误,0 个警告
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========两种方法都不行基本都是一个错误。怎么回事啊?

解决方案 »

  1.   

    typedef basic_string<TCHAR, char_traits<TCHAR>, allocator<TCHAR> > _tstring;
      

  2.   

    去掉#include <string>
    试试
      

  3.   

    #ifdef _UNICODE
     typedef wstring _tstring;
    #else
     typedef string _tstring;
    #endif用这个的时候应该就避开_TCHAR了 但还是错误
    ------ 已启动生成: 项目: QYCNGFtpSrv, 配置: Debug Win32 ------
    正在编译...
    stdafx.cpp
    d:\work\vc\qycngftpsrv\qycngftpsrv\stdafx.h(20) : error C2146: 语法错误 : 缺少“;”(在标识符“_tstring”的前面)
    d:\work\vc\qycngftpsrv\qycngftpsrv\stdafx.h(20) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    d:\work\vc\qycngftpsrv\qycngftpsrv\stdafx.h(20) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    生成日志保存在“file://d:\WORK\VC\QYCNGFtpSrv\QYCNGFtpSrv\Debug\BuildLog.htm”
    QYCNGFtpSrv - 3 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
      

  4.   

    你用的是VC6吧?VC6中没有定义basic_string类型。
      

  5.   

    晕死... 找到原因了 char_traits这个模板结构体在striing 头文件的std空间中的...............低级 低级......................
      

  6.   

    所有的东西都在std中的............ 哎... ... 对不起bjarne