我正在尝试使用流迭代器从控制台读取和输出单词。这是我的尝试:
#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+Z 或 F6 或(在 linux 上为 Ctrl+D)停止从流获取输入
在您的情况下,您可以使用 getline
和 istringstream
.它读取一个字符串直到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"));
一天内两个相同的问题,您可以阅读此内容。