创建一个输入操纵器skipchar(),它交替读取和跳过输入流的每5个字符

时间:2019-05-10 16:48:28

标签: c++ manipulators

我需要创建一个输入操纵器,它交替读取和跳过输入流的每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;来解决此问题?

0 个答案:

没有答案