gpt4 book ai didi

c++ - read、readsome、get 和 getline 之间有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 21:41:28 26 4
gpt4 key购买 nike

这些功能有什么区别。当我使用它们时,它们都做同样的事情。例如所有三个调用都返回 "hello":

#include <iostream>
#include <sstream>

int main()
{
stringstream ss("hello");
char x[10] = {0};
ss.read(x, sizeof(x)); // #1
std::cout << x << std::endl;
ss.clear();
ss.seekg(0, ss.beg);
ss.readsome(x, sizeof(x)); // #2
std::cout << x << std::endl;
ss.clear();
ss.seekg(0, ss.beg);
ss.get(x, sizeof(x)); // #3
std::cout << x;
ss.clear();
ss.seekg(0, ss.beg);
ss.getline(x, sizeof(x)); // #4
std::cout << x << std:endl;
}

最佳答案

getgetline 非常相似,当 get 被调用时带有参数 ( char_type* s, std::streamsize count )。但是,get 会从流中读取,直到找到分隔符,然后 将其保留在那里。相比之下,getline 会将分隔符从流中拉出,然后将其删除。它不会被添加到它填充的缓冲区中。

get 查找 \n,当在参数中提供特定数量的字符(例如,count)时,它将读取在停止之前最多 count - 1 个字符。 read 将拉入所有 count 个。

您可以将 read 设想为对二进制数据源的适当操作,读取特定数量的字节。 get 在文本流上更合适,当您读入一个您希望以空值结尾的字符串时,并且像换行符这样的东西具有有用的句法含义来分割文本。

readsome 仅返回在底层缓冲区中立即可用的字符,这有点模糊且特定于实现。例如,这可能包括使用 putback 返回到流中的字符。您看不到 readreadsome 之间的区别这一事实仅表明两者可能共享您正在使用的特定流类型和库的实现。

关于c++ - read、readsome、get 和 getline 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com