设计一个c++函数,每调用一次从vector中读出下一个字符。
如在main()中调用;
int main()
{
getnextchar();
getnextchar();
return 0;
} // 第一次读出1, 第二次调用读出2
有一个能用的解决方案
#include <iostream>#include <vector>using namespace std;void getnextchar();int main(){ getnextchar(); getnextchar(); return 0;}void getnextchar(){ static vector<char> vec; vec.push_back('a'); vec.push_back('b'); static int i=0; cout << vec[i]; i++;}
#include<vector>#include<iostream>template<class T>struct getnextchar_{ typename T::const_iterator i; template<class P> getnextchar_(const P& c) : i(c.cbegin()) {} void operator()() { std::cout << *i++; }};static std::vector<char> v{'1', '2'};static auto getnextchar = getnextchar_<std::vector<char>>(v);int main(){ getnextchar(); getnextchar();}