イテレータを扱う本 (C++ Primer 5th Edition) のセクションに入りました。これまでのところ、かなり単純に見えますが、いくつかの小さな課題があります。
本では、質問は「...最初の段落に対応するテキスト[ベクトル]の要素をすべて大文字に変更し、その内容を出力する」と尋ねています。
私が抱えている最初の問題は、本の110ページに、ベクトルに段落の終わりを示す空の要素があるかどうかを識別するために使用するコード例が示されていることです。本のコードは次のとおりです。
// print each line in text up to the first blank line
for (auto it = text.cbegin(); it != text.cend() && !it->empty(); ++it);
cout << *it << endl;
ただし、これをエディターに入力すると、*it を参照するエラーが表示されます: 宣言されていない識別子 'it' の使用。
ベクトルテキストを作成し、入力から要素を読み込み、イテレータを実行して段落の終わりがあるかどうかを確認し、段落全体を大文字にして結果を出力する場合、どうすればよいでしょうか?
私は知っていると思っていましたが、サンプルコードを入れるとすぐに上記のエラーが発生しました。
これが私が作成したコードです(大文字化を行う前に、段落を読み取れるかどうかをテストしたかったのですが)、これは最後に入力した単語を出力するだけです。
#include <iostream>
#include <string>
#include <vector>
using std::string; using std::vector; using std::cout; using std::cin; using std::endl;
int main ()
{
const vector<string> text;
string words;
while (cin >> words) {
for (auto it = text.cbegin(); it != text.cend() && !it->empty(); ++it);
}
cout << words << endl;
}
いつものように、あなたの助けに感謝します!