之间的差异<;cstring>;及<;字符串>; 今天早些时候(实际上是昨天由于我的时区),我正在尝试使用Visual Studio 2012 C++在Access Stand(使用G++)上进行编程面试。
简而言之,我在使用时遇到了几个编译错误1之间的差异<;cstring>;及<;字符串>; 今天早些时候(实际上是昨天由于我的时区),我正在尝试使用Visual Studio 2012 C++在Access Stand(使用G++)上进行编程面试。,c++,visual-studio,g++,C++,Visual Studio,G++,简而言之,我在使用时遇到了几个编译错误1 #include <cstring> #包括 这是一个问题中的骨架代码提供的,在转到 #include <string> #包括 所有编译错误都神奇地消失了 然而,当我提交给采访街时,我不得不把c加回去;否则我会出现编译错误 这是我第一次被非标准化咬到 我的问题是:和里面的什么花了我(宝贵的)半个多小时 1对于好奇的人: Visual Studio 2012在使用时出现的一个错误是: 错误C23 38:C++标准不提供这
#include <cstring>
#包括
这是一个问题中的骨架代码提供的,在转到
#include <string>
#包括
所有编译错误都神奇地消失了
然而,当我提交给采访街时,我不得不把c
加回去;否则我会出现编译错误
这是我第一次被非标准化咬到
我的问题是:
和
里面的什么花了我(宝贵的)半个多小时
1对于好奇的人: Visual Studio 2012在使用
时出现的一个错误是:
错误C23 38:C++标准不提供这种类型的哈希。
在
c:\ProgramFiles(x86)\microsoft visual studio 11.0\vc\include\xstddef
可能用于字符串
作为无序映射中的键
g++使用
时出现的一个错误是:
“strlen”未在此作用域中声明
cstring
头提供了处理C样式字符串(以null结尾的字符数组)的函数。这包括strlen
和strcpy
等功能。它是C++经典版本string
标题提供了std::string
类以及相关函数和运算符
标题有相似的名称,但除此之外,它们之间并没有真正的关联。它们涵盖了单独的任务。 在C++中,你不会使用<代码>包含< <代码> >,而是<代码> >包含
和
包含C头字符串.h中的C字符串代码C++
有一个约定,其中C
头具有相同的基本名称,除了前导的C
和尾随的.h
之外。所有内容都在std::
命名空间下可用
具有标准库和相关函数难题是:对于
字符串
,g++似乎不需要
,而对于c类内容,Visual Studio似乎不需要
。为什么?C++标准允许标准头包含其他标准头,这样您就可以从已经包含的任何其他标题中获得<代码>字符串< /代码>的内容,例如<代码> IoStry。同样适用于cstring
。始终包含您需要的所有标题。不要依赖于你的特定环境来含蓄地包含其中的一些内容;如果您需要代码可移植,或者更改了编译器版本,而新版本具有不同的隐式头依赖项,则会遇到问题。@DanteisnotaGeek:允许实现在头中包含其他头。最可能的情况是VS在您包含的某些其他标题中添加了#include
,而gcc在您包含的某些标题中添加了#include
。您应该同时包含这两个标题,因为您的代码依赖于这两个标题。难题是:对于字符串,g++似乎不需要
,而对于c类内容,Visual Studio似乎不需要
。为什么?@DanteisnotaGeek那么
必须包含在不同的标题中。如果需要,您应该始终包括
。我不认为有任何标准头可以保证包含它。难题是:对于字符串,g++似乎不需要
,而对于c类的东西,Visual Studio似乎不需要
。“为什么?”DanteisnotaGeek问得好。MSVC总是有点奇怪。