我需要创建一个输入操纵器,它交替读取和跳过输入流的每5个字符,但是我的代码不起作用。如何将字符写入str变量而不将其作为参数传递给操纵器? stream.get()是否适合此目的?另外我该如何忽略输入流的字符?
这是我的代码:
#include <iostream>
using namespace std;
istream &skipchar(istream &stream) {
char ch;
int i;
stream.unsetf(ios::skipws);
while (ch != '\n') {
i = 0;
do {
ch = stream.peek();
if (ch == '\n')
return stream;
i++;
stream.get();
} while (i != 5);
for (i = 0; (ch != '\n') && (i < 5); i++)
stream >> ch;
if (i != 5)
return stream;
}
return stream;
}
int main() {
char str[80];
cin >> skipchar >> str;
cout << str << endl;
return 0;
}
字符串str为空,要结束输入,我应该按Enter键两次。我该如何在main()函数中使用必不可少的cin >> skipchar >> str;
来解决此问题?