C++流迭代器



我正在尝试使用流迭代器从控制台读取和输出单词。这是我的尝试:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
    vector<string> stringVec;
    copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(stringVec));
    sort(stringVec.begin(), stringVec.end());
    unique_copy(stringVec.cbegin(), stringVec.cend(), ostream_iterator<string> (cout, "n"));
    return 0;
}

当我输入"就是这样"并在控制台中按 Return 时,那里的光标一直闪烁(表示它正在等待输入)。

任何人都可以就我的方法提供一些见解吗?

提前谢谢。

你需要

istream_iterator<string>() 提供一个 EOF,它构造流结束迭代器。

使用 Ctrl+ZF6 或(在 linux 上为 Ctrl+D)停止从流获取输入

在您的情况下,您可以使用 getlineistringstream .它读取一个字符串直到n,然后将其传递给副本。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
...
vector<string> stringVec;
string str;
getline(cin, str);
istringstream ss(str);
copy(istream_iterator<string>(ss),
     istream_iterator<string>(),
     back_inserter(stringVec));
sort(stringVec.begin(), stringVec.end());
unique_copy(stringVec.cbegin(),
            stringVec.cend(),
            ostream_iterator<string> (cout, "n"));

一天内两个相同的问题,您可以阅读此内容。

相关内容

  • 没有找到相关文章

最新更新