字符流与字节流关于返回值int概述

https://www.aliyun.com/jiaocheng/1452562.html 

c的char分配一个字节的存储空间。也就是8位。2的八次方是256,也就是-128-127。
而java的char是两个字节的存储空间。也就是16位,2的16次方为65536,也就是0-65535

 /*
   * 如果返回char, 那么无法表示流末尾.
   * char的取值范围是从0到65535
   * 这个范围内的所有字符, 都有可能在数据中出现
   * 我们需要使用一个不可能在数据中出现的值来表示流末尾
   * 那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中出现
   * 而为了返回-1, 那么只能用int
   * 当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1
   */

 

 /*
   * 如果返回byte, 同样无法表示流末尾.
   * byte的取值范围是从-128到127
   * 这个范围内所有的数据, 都有可能在数据中出现
   * read()方法需要返回一个特殊的值来表示流末尾, 这个值不能和流中的数据重复
   *
   * 字符流中读取到的char是直接当作int使用, 例如读取到一个'a'也就是97的时候, 那么就相当于返回了一个int的97
   * 字节流中不能这么做, 因为如果文件中存在数据-1, 把-1直接当作int返回还是-1, 那么就无法区分这个读到的结果是流末尾还是流中的数据了
   *
   * read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
   * 这时就可以用-1表示流末尾了
   * 而改变后的数据只要强转回byte, 就可以得到原有数据
   */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
向ostringstream字节流写入字符有两种方式:使用`put`函数和使用`<<`运算符。 1. 使用put函数 put函数是ostringstream类一个成员函数,它可以将一个字符写入到ostringstream对象。put函数的语法如下: ``` ostringstream& put (char c); ``` 其,put函数的参数c是要写入到ostringstream对象字符,函数返回值一个指向ostringstream对象本身的引用。 以下是一个使用put函数向ostringstream对象写入字符的示例: ``` #include <iostream> #include <sstream> using namespace std; int main() { ostringstream oss; char c = 'A'; oss.put(c); string result = oss.str(); cout << "result: " << result << endl; return 0; } ``` 在上面的示例,我们首先定义了一个ostringstream对象oss,然后使用put函数向oss写入一个字符。最后,我们调用oss的`str()`方法,获取oss存储的字符串,并将其存储到一个字符串变量result。最后,我们打印出result字符串。 输出结果为: ``` result: A ``` 2. 使用<<运算符 除了使用put函数,我们还可以使用<<运算符向ostringstream对象写入字符使用<<运算符向ostringstream对象写入字符的方式与向cout输出字符的方式相同。 以下是一个使用<<运算符向ostringstream对象写入字符的示例: ``` #include <iostream> #include <sstream> using namespace std; int main() { ostringstream oss; char c = 'A'; oss << c; string result = oss.str(); cout << "result: " << result << endl; return 0; } ``` 在上面的示例,我们首先定义了一个ostringstream对象oss,然后使用<<运算符向oss写入一个字符。最后,我们调用oss的`str()`方法,获取oss存储的字符串,并将其存储到一个字符串变量result。最后,我们打印出result字符串。 输出结果与前面的示例相同: ``` result: A ``` 综上所述,我们可以使用put函数或<<运算符向ostringstream对象写入字符,这两种方式均非常方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值