1. ホーム
  2. c++

[解決済み] <cstring>と<string>の違いについて

2022-02-16 03:48:23

質問

本日早朝(時間帯の関係で実際には昨日)、私はプログラミングの面接に挑戦していました。 ビジュアルスタジオ2012 for C++を面接街で使用する( g++ ).

簡単に説明すると、いくつかのコンパイルエラーに出くわしました。 1 を使っているときに

#include <cstring>

という質問で、スケルトンコードで提供されたものです。

#include <string>

は、すべてのコンパイルエラーが魔法のように消えました。

しかし、Interview Streetに提出する際、私はその前に c でないとコンパイルエラーになります。

非標準化に初めて食らいつきました......。

質問です:どのような内部 <string><cstring> は30分以上かかりましたよ。


1 気になる人のために

Visual Studio 2012 で以下のようなエラーが発生した場合 using <cstring> があります。

エラー C2338 です。C++ 標準では、この型のハッシュは提供されていません。

c:\program files (x86)\microsoft visual studio 11.0vcincludexstdef

の可能性があります。 string をキーとして unordered_map

g++で1つのエラーが発生した場合 using <string> があります。

strlen' はこのスコープで宣言されていません。

解決方法は?

その cstring ヘッダーは C スタイルの文字列 (ヌル文字で終端する文字の配列) を扱うための関数を提供します。これには、以下のような関数が含まれます。 strlenstrcpy . これは、古典的な string.h ヘッダを生成します。

string ヘッダは std::string クラスと関連する関数や演算子で構成されます。

ヘッダーは名前が似ていますが、それ以上の関連性はありません。これらは別々のタスクをカバーしています。