c++输入和输出流
C++ input and output streams
是否有可能为c++ '输入流读取从聊天室如msn,雅虎和类似的东西,并返回某种消息?只是想知道,因为我搜索网络,大部分需要客户端和服务器。
我是新手
不;这两个概念只有一点相似之处。
- c++ iostreams是一个非常低级的结构,用于从操作系统设备(如文件系统、fifo、socket等)中读取字节。
- 聊天服务通过XMPP等高级协议实现,XMPP通过操作系统提供的套接字api在TCP上操作。
总之,他们是截然不同的。
已经有了名义上的努力,通过iostream工具提供对套接字的访问,它被设计成以这种方式扩展。然而,这些库在主流c++编程中从未获得显著的吸引力。即使他们做到了,他们离实现像XMPP这样复杂的协议还有很长的路要走。
是的,如果你能找到(或编写)一个库来实现那个抽象。
正如Marcelo所说,聊天服务等使用复杂的协议运行。但是对于工作室和文件流也有类似的情况——写入文件或文本模式显示(甚至还没有提到GUI中的控制台窗口)都有相当多的复杂性。大部分的复杂性已经被操作系统和标准库抽象掉了。
仍然可以编写一个库来抽象掉大部分的复杂性。然后,该库可以提供充当输入和/或输出流的对象,遵循与标准流相同的约定,并从相同的基继承。
这可能是一个好方法,但我敢说这是罕见的。也许我错了——我从来没有真正为这种事情编写过程序。但是,如果我是对的,一个可能的原因是库经常被编写为同时兼容C和c++。
而且,即使在c++程序员中,流抽象也并不总是被认为是一个好特性。很多人希望看到它们被限制在工作室和文件I/O上,并没有真正认识到流是一个更一般的抽象。
BTW -这与马塞洛斯的回答并不矛盾。"如果你能找到(或编写)一个库"是一个很大的假设。
您可以创建一些类,例如MY_CLIENT。在这个类中,您需要实现函数
std::streamsize write( const char *s, std::streamsize n );
std::streamsize read( char* s, std::streamsize n );
在该函数中,您需要实现聊天室逻辑的协议,如何发送数据,以及读取。
之后查看boost::iostreams
库。有了它,你可以这样写:
boost::iostreams::stream< MY_CLIEN> my_chat_stream;
和my_chat_stream你可以使用作为std::istream, std::ostream
为您的程序,与所有的c++流机会
- 为什么我的输出与输入不同?(C++)
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 在输出流中插入换行符
- 在类外部重载输入和输出流
- 通用容器的输出流
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 如何让我的输出显示输入金额的星号
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 组合输入和输出流
- 标准C++输入输出流必须如何处理intXX_t类型
- 输出流中出现的尚未输入的C++数字
- 使用字符串流输入/输出布尔值
- C++:输入和输出流运算符:关联性
- 从输出流中删除输入
- 如何在一行中将输入流重定向到输出流
- 如果输入流被发送到输出流会发生什么?
- 如何在c++中写入/读取未知的输入/输出流
- c++输入和输出流
- 输入和输出流