如果您有一个文字文件,您正在逐字逐句地阅读cin:
char text;
cin >> text;
cout << char << endl;
假设您要忽略以“&gt;”开头的所有行直到新的一行,你怎么能这样做?
答案 0 :(得分:1)
您可以使用::
比较char
的{{1}}读数
'>'
如果找到,请跳至int strncmp ( const char * str1, const char * str2, size_t num );
读取等于char
,即跳至'\n'
返回strncmp
0
答案 1 :(得分:0)
通常你想使用std :: istream :: ignore,比如:
static const int max_line = 65536;
if (text == ">")
std::cin.ignore(max_line, '\n');
请注意,我已指定跳过64K字节的最大距离。许多人推荐类似std::numeric_limits<std::streamsize>::max()
的内容,这基本上意味着跳过任何数量的文本,直到找到分隔符(在这种情况下为新行)。
IMO,指定如此庞大的数字通常是一个糟糕的想法 - 如果您在没有看到新行的情况下长时间 ,那么停止并假设您获得了错误的数据是安全的。一旦你读过足够多的是的合理的一定有问题,最好停下来警告用户,而不是明显地锁定了程序花费几分钟,读书无用论千兆字节的数据(和然后可能会给用户一个错误信息。
另一种可能性(特别是如果你相当肯定你会得到好的输入)是从一个完整的行开始(例如,使用std :: getline),然后如果它以>
开头,只是跳过处理该行,然后返回阅读下一行。