3

C 编程中 cin.peek() 的等价物是什么?我需要扫描文件中的“/r”和“/r/n”(这些是 DOS 文件的行尾标记),因此如果当前字符是“/r”,我需要“窥视”下一个字符'

谢谢!

4

3 回答 3

2

ungetc(),当你偷看它们时,它允许你将字符推回(就好像它们还没有被读取一样)。

http://www.zyba.com/reference/computing/c/stdio.h/ungetc.php

于 2012-01-28T03:12:30.480 回答
1

作为 read+ 的替代方法ungetc(),您可以逐个字符地读取文件,然后跳过不必要的 '\r' 和/或 '\n' 或对它们执行任何其他特殊处理。一个简单的状态机可以提供帮助。

于 2012-01-28T03:52:06.753 回答
0

尝试:

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

于 2012-01-28T04:04:24.480 回答