如何使用cin.ignore忽略C ++中的指定字符

时间:2015-08-21 17:19:40

标签: c++ keyboard

我想使用cin.ignore()从键盘获取数据。 例如:我输入一个字符串" 12/12 / 2015"。我怎么能忽略" /"为了得到我的数据字符串" 12122015"。因为我在书中读到(如何编程c ++,deitel),他们使用cin.ignore来做到这一点,但现在我无法找到在哪儿? 谢谢你的帮助!!!

2 个答案:

答案 0 :(得分:2)

您必须手动处理

cin.ignore以另一种方式工作。 See cplusplus

  

<强> istream的&安培; ignore(streamsize n = 1,int delim = EOF);

     

从输入序列中提取字符并丢弃它们,直到提取了n个字符,或者一个比较等于delim。

可能是一个简单的解决方案:Replace\remove character in string

答案 1 :(得分:1)

您可以读取固定数量的字符,然后使用cin.ignore(1)跳过以下字符,但它不是很优雅。如果我是你,我会使用getline,并将行尾分隔线设置为'/'

string day, month, year;

getline(cin, day, '/');
getline(cin, month, '/');
// and the rest is assumed to be the year
cin >> year;

string date = day + month + year;
cout << date << '\n';

但是,如果确实想要使用cin.ignore,那么这里(我认为,在一段时间内没有使用过C字符串)似乎给了正确的结果):

char day[3], month[3], year[5];

cin.get(day, 3);
cin.ignore(1);
cin.get(month, 3);
cin.ignore(1);
cin.get(year, 5);

string date = string(day) + string(month) + string(year);
cout << date << '\n';