我现在进入了一本关于迭代器的书(C++ Primer 5th Edition)的一部分。到目前为止,这似乎相当简单,但我遇到了一些小挑战。
在书中,问题要求“......将文本[a vector] 中与第一段相对应的元素更改为全部大写并打印其内容。”
我遇到的第一个问题是,在本书的第 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;
}
一如既往地感谢您的帮助!