0

これは、std::vector のコンストラクターの使用に関する質問であるため、RapidXML 規則に関する特定の質問ではありません。

RapidXML を使用して私が見つけた他のすべての例では、誰もが次のように 's コンストラクターcharを使用して常にデータを 's のベクトルに読み込みます。std::vector

vector<char> buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());

のベクトルに変更しようとするとstd::string、これが最初のエラーであるエラーでいっぱいの画面が表示されるため、これには理由があるに違いありません。

error: invalid conversion from ‘void*’ to ‘std::istreambuf_iterator<std::basic_string<char> >::streambuf_type* {aka std::basic_streambuf<std::basic_string<char>, std::char_traits<std::basic_string<char> > >*}’

std::string を使用する方法はありますか?

4

1 に答える 1

1

あなたは何をしようとしているのですか?

ファイルの内容を単一の文字列にしますか? もしそうなら、

string buffer((istreambuf_iterator<char>(theFile)), istreambuf_iterator<char>());

するべきです。

一方、文字列のベクトルが必要な場合は、各文字列にファイルからの 1 行が含まれている場合、次のようなループを記述する必要があります (テストされていないコード)。

vector <string> lines;
for (string aLine; std::getline(theFile, aLine) ; )
    lines.push_back(aLine);
于 2013-09-11T22:24:09.990 に答える