微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C ++中为cin.ignore指定多个定界符?

如何解决如何在C ++中为cin.ignore指定多个定界符?

以下是我的代码

// Program to print the initials of a name
#include <iostream>
using namespace std;

int main() {
  char first,last;
  cout<<"Enter first and last name: ";
  first = cin.get();
  cin.ignore(10000,' ');
  last = cin.get();
  cout<<first<<" "<<last;
  return 0;
}

我正在寻找一种方法来指定多个定界符作为cin.ignore()的第二个参数,例如cin.ignore(10000,'\n' or ' ')。有没有办法做到这一点?

解决方法

您可以使用std::any_of进行读取,直到读取的字符是您自己定义的一组字符中的任何一个。

示例:

#include <algorithm> // any_of
#include <iterator>  // istreambuf_iterator
#include <string>

std::istream& myignore(std::istream& is,const std::string& delims) {
    if(std::any_of(std::istreambuf_iterator<char>(is),std::istreambuf_iterator<char>{},[&delims](char ch){
                       return delims.find(ch) != std::string::npos;
                   }
    )) is.get(); // read the delimiter to remove it
    return is;
}

然后,您致电cin.ignore(10000,' ')而不是致电myignore(cin," \n");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。