今日(実際には昨日のタイムゾーンのため)昨日、Interview StreetのC++でVisual Studio 2012(g ++を使用)を使用してプログラミングインタビューを試みました。
簡単に言うと、いくつかのコンパイルエラーに遭遇しました1 私が使っていたとき
#include <cstring>
質問の1つでスケルトンコードによって提供され、
#include <string>
すべてのコンパイルエラーが魔法のように消えました。
ただし、インタビューストリートに提出すると、c
を追加し直す必要がありました。そうしないと、コンパイルエラーが発生しました。
非標準化に噛まれたのは初めてでした。
私の質問は:<string>
と<cstring>
の中では30分以上(貴重な)かかったものは何ですか?
1 好奇心が強い人には:
using <cstring>
が次の場合、Visual Studio 2012による1つのエラー:
エラーC2338:C++標準はこのタイプのハッシュを提供しません。
に
c:\ program files(x86)\ Microsoft visual studio 11.0\vc\include\xstddef
unordered_map
のキーとしてstring
の場合
using <string>
が次の場合、g ++による1つのエラー:
'strlen'はこのスコープで宣言されていません
cstring
ヘッダーは、Cスタイルの文字列を処理するための関数を提供します-文字のヌル終了配列。これには、strlen
やstrcpy
などの関数が含まれます。 Cの古典的なstring.h
ヘッダーのC++バージョンです。
string
ヘッダーは、std::string
クラスおよび関連する関数と演算子を提供します。
ヘッダーの名前は似ていますが、それ以上に関連しているわけではありません。それらは別々のタスクをカバーします。
<cstring>
には、Cヘッダーstring.hからのCストリングコードがあります。 C++
には、C
ヘッダーが同じベース名を持つという規則があります。ただし、先頭のc
があり、末尾の.h
はありません。すべてのコンテンツは、std::
名前空間で利用できます。
<string>
には標準ライブラリがあります std::string
および関連関数
C++では、#include <somefile.h>
を使用せず、代わりに#include <somefile>
を使用します。現在、C++の文字列クラスは<string>
にありますが、c-string関数も使用できます。これは<string.h>
にあります。 C++は「従来の」c-インクルードファイルに使用します。したがって、<cstring>
および<string>