tstring typedef 的问题
我在尝试为自己输入一个方便的 tstring 时遇到问题(见下文),
#ifndef _NISAMPLECLIENT_H_
#define _NISAMPLECLIENT_H_
#include <windows.h>
#include <stdlib.h>
using namespace std; // ERROR here (1)
#ifdef _UNICODE
#define CommandLineToArgv CommandLineToArgvW
#else
#define CommandLineToArgv CommandLineToArgvA
#endif
typedef basic_string<TCHAR> tstring; // ERROR HERE (2)
在尝试编译它时出现编译器错误。 “此处错误 (1)”处的错误是:
错误 3 错误 C2871:“std”:具有此名称的命名空间不存在 \nisampleclient\nisampleclientdefs.h 16
如果我删除 using namespace std;
声明并将 ERROR HERE (2) 更改为 <代码>typedef std::basic_string
错误 3 错误 C2653:“std”:不是类或命名空间名称 \nisampleclient\nisampleclientdefs.h 23
错误 3 错误 C2653:“std”:此时
。提前致谢。 :)
I am having a problem with trying to typedef myself a nice handy tstring (see below)
#ifndef _NISAMPLECLIENT_H_
#define _NISAMPLECLIENT_H_
#include <windows.h>
#include <stdlib.h>
using namespace std; // ERROR here (1)
#ifdef _UNICODE
#define CommandLineToArgv CommandLineToArgvW
#else
#define CommandLineToArgv CommandLineToArgvA
#endif
typedef basic_string<TCHAR> tstring; // ERROR HERE (2)
I get a compiler error when trying to compile this. The error at "ERROR here (1)" is :
Error 3 error C2871: 'std' : a namespace with this name does not exist \nisampleclient\nisampleclientdefs.h 16
If I remove the using namespace std;
declaration and change ERROR HERE (2) to say typedef std::basic_string<TCHAR> tstring;
then I get an error:
Error 3 error C2653: 'std' : is not a class or namespace name \nisampleclient\nisampleclientdefs.h 23
at that point instead.
Thanks in advance. :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
包含
string
标头(#include
,而不是 string.h ;))。另外,永远不要
在标头中使用: ... ,除非您想平息其他开发人员的愤怒;)
旁注:在 C++ 中,大多数传统 C 标准标头都有不带
.h 的对应部分
扩展名,但以c
开头。在您的情况下,#include
将是更好的选择,尽管这取决于您使用的编译器是否存在实际差异。Include the
string
header (#include <string>
, not string.h ;)).Also, don't ever use:
... in headers unless you want to call down the wrath of your fellow developers ;)
Side-note: in C++ most of the traditional C standard headers have counter-parts without
.h
extension but with a leadingc
. In your case#include <cstdlib>
would be the better choice, although it depends on the compilers you use whether there is an actual difference.std::basic_string
类模板采用三个参数。所以你必须这样做:std::basic_string
class template takes three arguments. So you've to do this: