为什么在包含时会出现编译器错误?并使用 std::basic_string?
当我尝试编译以下代码时:
#include <string.h>
using namespace std;
typedef std::basic_string<char> foostring;
foostring foo = "foo";
出现以下错误:
stringtest.cpp:5: error: expected initializer before ‘<’ token
stringtest.cpp:6: error: ‘foostring’ does not name a type
我的编译器是:g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
我做错了什么?一旦我弄清楚如何使用它,我打算将其与 Windows TCHAR 一起使用以支持 unicode。
When i try to compile the following code:
#include <string.h>
using namespace std;
typedef std::basic_string<char> foostring;
foostring foo = "foo";
I get the following error:
stringtest.cpp:5: error: expected initializer before ‘<’ token
stringtest.cpp:6: error: ‘foostring’ does not name a type
My compiler is: g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
What am i doing wrong? i intend to use this with windows TCHAR for unicode support once i figure out how to use it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
标头是
,而不是
。没有一个标准库头文件以扩展名结尾。 (您包含了 C 标头
string.h
,如果您真正想要的话,它应该通过
包含在 C++ 中。)The header is
<string>
, not<string.h>
.None of the standard library headers end with an extension. (You're including the C header
string.h
, which should be included in C++ via<cstring>
, had that been what you actually wanted.)