问题描述
以下是我的代码:
// 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");