Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
之间的差异<;cstring>;及<;字符串>; 今天早些时候(实际上是昨天由于我的时区),我正在尝试使用Visual Studio 2012 C++在Access Stand(使用G++)上进行编程面试。_C++_Visual Studio_G++ - Fatal编程技术网

之间的差异<;cstring>;及<;字符串>; 今天早些时候(实际上是昨天由于我的时区),我正在尝试使用Visual Studio 2012 C++在Access Stand(使用G++)上进行编程面试。

之间的差异<;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++标准不提供这

简而言之,我在使用时遇到了几个编译错误1

#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++在 > /Cudio >中有了字符串类,但是C字符串函数也是可用的,它将在<代码> <代码>中。C++用于“传统”的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总是有点奇怪。