标题非常自我解释.
char c = std::cin.peek(); // sets c equal to character in stream
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到,也许原生类型的char不能保持EOF.
谢谢,核磁共振
简短回答:不.使用int而不是char.
稍微长一点的答案:不.如果你可以从一个函数中获得一个字符或值EOF,比如C的getchar和C++的窥视,很明显一个普通的char变量不足以同时保存所有有效字符和值EOF.
甚至更长的答案:这取决于,但它永远不会像你希望的那样工作.
C和C++有三种字符类型("宽"类型除外):char,signed char和unsigned char.普通字符可以是签名的或未签名的,这在编译器之间有所不同.
值EOF是一个负整数,通常为-1,所以很明显你不能将它存储在unsigned char或unsigned中的普通char中.假设您的系统使用8位字符(几乎全部都是这样),EOF将转换为(十进制)255,并且您的程序将无法工作.
但是如果您的char类型已签名,或者您使用signed char类型,那么是,您可以在其中存储-1,所以是的,它可以保存EOF.但是当你从文件中读取代码为255的字符时会发生什么呢?它将被解释为-1,即EOF(假设您的实现使用-1).所以你的代码不仅会在文件末尾停止读取,而且一旦找到255个字符就会停止读取.
| 归档时间: |
|
| 查看次数: |
1419 次 |
| 最近记录: |