tstring typedef 的问题

发布于 2024-10-19 04:58:29 字数 849 浏览 1 评论 0原文

我在尝试为自己输入一个方便的 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; tstring;然后我得到一个错误:

错误 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何时共饮酒 2024-10-26 04:58:29

包含 string 标头(#include,而不是 string.h ;))。

另外,永远不要

using namespace ...

在标头中使用: ... ,除非您想平息其他开发人员的愤怒;)

旁注:在 C++ 中,大多数传统 C 标准标头都有不带 .h 的对应部分 扩展名,但以 c 开头。在您的情况下, #include 将是更好的选择,尽管这取决于您使用的编译器是否存在实际差异。

Include the string header (#include <string>, not string.h ;)).

Also, don't ever use:

using namespace ...

... 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 leading c. In your case #include <cstdlib> would be the better choice, although it depends on the compilers you use whether there is an actual difference.

一页 2024-10-26 04:58:29

std::basic_string 类模板采用三个参数。所以你必须这样做:

 #include <string> //include this

 typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > tstring;

std::basic_string class template takes three arguments. So you've to do this:

 #include <string> //include this

 typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > tstring;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文