C 编程中 cin.peek() 的等价物是什么?我需要扫描文件中的“/r”和“/r/n”(这些是 DOS 文件的行尾标记),因此如果当前字符是“/r”,我需要“窥视”下一个字符'
谢谢!
有ungetc()
,当你偷看它们时,它允许你将字符推回(就好像它们还没有被读取一样)。
http://www.zyba.com/reference/computing/c/stdio.h/ungetc.php
作为 read+ 的替代方法ungetc()
,您可以逐个字符地读取文件,然后跳过不必要的 '\r' 和/或 '\n' 或对它们执行任何其他特殊处理。一个简单的状态机可以提供帮助。
尝试:
char c;
FILE *fp;
// opening file, etc.
if((c = getc(fp)) == '\r')
ungetc(c, fp);
或者:
char c;
FILE *fp;
// opening file, etc.
fread(&c, sizeof(char), 1, fp);
if(c == '\r')
{
fseek(fp, -1L, SEEK_CUR);
fwrite(&c, sizeof(char), 1, fp);
}
if you need to read two values(as "\n\r"), you can use a short for storing it, and the test with it's numeric value