1. ホーム
  2. c++

[解決済み] 不明な型名文字列 C++

2022-02-12 03:44:41

質問

私はC++の初心者ですが、2つのXMLファイルを比較するプログラムについて、いくつかのヘルプがありました。 これは私が持っているコードです。

#include "pugixml.hpp"

#include <iostream>
#include <unordered_map>

int main() {
    pugi::xml_document doca, docb;
    std::map<string, pugi::xml_node> mapa, mapb;

    if (!doca.load_file("a.xml") || !docb.load_file("b.xml"))
        return 1;

    for (auto& node: doca.child("site_entries").children("entry")) {
        const char* id = node.child_value("id");
        mapa[new std::string(id, strlen(id))] = node;
    }

    for (auto& node: docb.child("site_entries").children("entry"))
        const char* idcs = node.child_value("id");
        std::string id = new std::string(idcs, strlen(idcs));
        if (!mapa.erase(id)) {
            mapb[id] = node;
        }
    }

}

コンパイルしようとすると、エラーがたくさん出るようです。

最初に出てくるのはこれです。

src/main.cpp:10:14: error: unknown type name 'string'; did you mean 'std::string'?
    std::map<string, pugi::xml_node> mapa, mapb;
        ~~~~~^~~

私が理解したところでは、正しく指定されています。このまま変更したほうがいいのか、それとも何か間違っているのでしょうか?

解決方法は?

を使用するには、文字列ライブラリをインクルードする必要があります。 std::string .

を挙げているので 多くのエラー を入れ忘れたのではないでしょうか? <cstring> を使用するために strlen() .

#include <string>
#include <cstring>