今天使用istream_iterator和copy将输入保存在vector的数组中,但是输入完之后就不能在使用cin进行输入了,如:cin>>input;这句总是不能被执行,原因是copy的结束是eof,也就是标准输入的结尾标记是istream_iterator<unsigned short>(),这个是被标记成一输入错误,后面的标准输入就不能进行下去了……
istream_iterator<unsigned short> is(cin);
istream_iterator<unsigned short> eof;
vector<unsigned short> harr;
copy(is, eof, back_inserter(harr));
应该在再次使用标准输入之前调用cin的clear和sync,clear()函数是清理标准输入错误的,sync()是清理缓存区的。
istream_iterator<unsigned short> is(cin);
istream_iterator<unsigned short> eof;
vector<unsigned short> harr;
copy(is, eof, back_inserter(harr));
cin.clear();
cin.sync();
在调用copy之前应该调用sync()确保标准输入区缓存区为空的,如果没有调用cin.sync(),input的内容也会输入到harr数组中去
cin>>input;
cin.sync();
istream_iterator<unsigned short> is(cin);
istream_iterator<unsigned short> eof;
vector<unsigned short> harr;
copy(is, eof, back_inserter(harr));
分享到:
相关推荐
例如,我们可以创建一个`std::istream_iterator`从`std::cin`读取整数并将其存储在一个`std::vector`中: ```cpp #include #include <iterator> #include int main() { std::vector<int> numbers; std::...
- 使用标准输入输出流(如`cin`和`cout`)实现与用户的交互。 - 示例代码中通过以下方式实现: ```cpp string tt, ll; cout ; cin >> tt; cout ; cin >> ll; ``` 2. **文件操作**: - 使用`ifstream`和`...
std::istream_iterator<int> in_it(std::cin); while (in_it != std::istream_iterator()) { std::cout *in_it ; ++in_it; } ``` ##### 向前迭代器(Forward Iterator) 向前迭代器结合了输出迭代器和输入迭代器的...
std::copy(std::istream_iterator(std::cin), std::istream_iterator(), std::back_inserter(e)); std::vector<Date>::iterator first = std::find(e.begin(), e.end(), "01/01/95"); std::vector<Date>::...
std::copy(std::istream_iterator(iss), std::istream_iterator(), std::inserter(set, set.begin())); // 输出集合 std::cout 集合元素:"; for (auto elem : set) { std::cout ; } ``` 最后,比较操作通常基于...
std::copy(std::istream_iterator(std::cin), std::istream_iterator(), std::back_inserter(v)); ``` ###### 4.4.3 函数适配器 函数适配器可以改变函数对象的行为,例如`bind2nd`可以绑定函数的一个参数。 ```...
- **`istream_iterator`**:用于从输入流提取元素的迭代器适配器。 #### 28. `<ios>` - 输入输出流 - **`ios`**:输入输出流的基本类,继承自`ios_base`。 #### 29. `<iomanip>` - 输入输出调整 - **`setfill()`...
void readcondition(int numberofDot,istream streamin,ostream streamout ) { N = numberofDot; //控制点数据: for (int i(0);i;i++) { //streamout请输入第"个坐标(x,y,xp,yp坐标用空格隔开):"; Point ...
15. **Istream**: 标准输入流库,主要类为`std::basic_istream`,`std::cin`是其实例。 16. **Iterator**: 迭代器库,定义了各种迭代器类型,用于遍历容器。 17. **Limits**: 类型限制库,`std::numeric_limits`...
istream_iterator<string> begin(file), end; vector<string> lines(begin, end); for (const auto& line : lines) { cout ; } return 0; } ``` #### 3.13 遍历和谓词 (Traversals and Predicates) C++...