繁体   English   中英

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

[英]how to use cin.ignore to ignore specified character in C++

我想使用cin.ignore()从键盘获取数据。 示例:我输入了一个字符串“ 12/12/2015”。 我如何忽略“ /”以获取诸如“ 12122015”这样的字符串。由于我在书中读过(如何编程c ++,deitel),他们使用cin.ignore来做到这一点,但现在我找不到了在哪儿? 感谢您的帮助!!!

您必须手动处理

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

istream&忽略(streamsize n = 1,int delim = EOF);

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

可能是简单的解决方案: 替换\\删除字符串中的字符

您可以读取固定数量的字符,然后使用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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM