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