jjzjj

c++ - 如何手动将数据放入 boost::asio::streambuf 以便稍后使用 std::istream 读取它?

我正在尝试使用std::istream作为数据源。我想将自定义二进制数据放置到istream的流缓冲区中,以便稍后可以从istream中检索它。我已经阅读了有关boost::asio::streambuf的内容,以及如何使用它来完成我想要的,但使用套接字作为数据源而不是我想使用的内存缓冲区。据我了解documentation,步骤应该是:创建一个boost::asio::streambuf创建一个传递streambuf的std::istream调用boost::asio::streambuf::prepare以获取表示输出序列的缓冲区列表。以某种方式写入输出序列。调用boost::as

c++ - 为什么调用 istream::tellg() 会影响我的程序的行为?

我正在尝试将24位位图图像转换为灰度图像。#include#include#include#includeusingnamespacestd;classpixel{public:unsignedcharb;unsignedcharg;unsignedcharr;voiddisplay(){cout当我删除couttellg语句时,循环只运行两次!我不明白删除cout语句有什么不同?结果:只有一个像素变为灰度。我在这里找到了我的问题的一个更简单的版本Readingandwritingtofilessimultaneously?但是没有找到解决方案... 最佳答

C++ 流引用作为类成员

我有一个类是这样的:#includeclassA{public:A(std::istream&is):_is(is){}voidsetInputSource(std::istream&is){_is=is;}A&operator>>(int&x){_is>>x;return*this;}private:std::istream&_is;};我想要_is成员(member)仅供引用。我的意思是,它必须“指向”外部std::istream我不想要setInputSource()复制作为参数传递的流的方法。问题是程序无法编译,因为我提到的那个方法试图访问operator=类(class)st

c++ - 输入一个字母到 'int'

代码:inta;cin>>a;cout然后我使用g++test.cpp,并运行它。然后我向变量a输入一个字母'b'。输出为0。但是,当我测试其他代码时:cout为什么?有什么不同? 最佳答案 std::cin是一个对象,一个std::istream的实例.std::istream已重载>>支持avarietyoftypes.其中一种类型是&int.当有std::istream在>>的左边和右边的整数引用,方法istream&operator>>(int&val)叫做。该方法的概念性实现如下。将0存入累加器读取输入的一个字符如果字符是

c++ - std::istream 类型是 EqualityComparable 吗?

我的问题会有一个bool值答案:是或否。不管是哪一个,有人能解释一下下面的代码是如何被GNU-g++4.9.2和clang3.5编译的,而GNU-g++5.1.1不再接受它,声称没有匹配的operator==?以及如何更改它,对于最后一个编译器,为了获得相同的结果,即让operator>>能够以如此简单的方式区分,是否它是由标准输入流或其他东西调用的?#include#includestructS{};std::istream&operator>>(std::istream&i,S&s){if(i==std::cin)std::clog>s;std::ifstreaminp(args[

c++ - 请求 Y 的非类类型 Z 的成员 X

当尝试编译以下C++代码片段时(下面是完整的源代码)A::A(istream&i){vectorwords(istream_iterator(i),istream_iterator);words.begin();}我遇到了错误istream_it.cpp:12:error:requestformember‘begin’in‘words’,whichisofnon-classtype‘std::vector>(std::istream_iterator,longint>,std::istream_iterator,longint>)’我知道这个错误通常是由于不小心使用无参数运算符声明函数

c++ - 来自 istream 的子流

假设我有一个ifstream,它表示一个包含许多聚合在一起的子文件的大文件。我希望能够从代表文件一部分的较大ifstream(给定大小和偏移量)创建一个“子”istream,以便其他代码可以从中读取子流就好像它是一个独立的istream。关于如何实现这一点有什么想法吗?编辑-我宁愿避免提升。 最佳答案 这是一个streambuf“过滤器”的示例,它从指定位置开始读取包含的streambuf并读取到指定大小。您创建substreambuf,将原始streambuf传入,然后substreambuf转换访问,以便从底层中的所需位置读取所

c++ - 我不能在调用 istream 作为参数的函数中使用 ifstream 吗?

这是使用C++编程原则和实践第10章的练习。该程序使用点:它提示用户输入(x,y)对。然后将它们存储在称为original_points的点vector中。原始点被打印到文件中程序然后读取文件以检索相同的点,存储在名为processed_points的点vector中比较两个vector,如果它们不相同,程序会抛出错误。问题是processed_points的size()为0,只有当我使用get_vector_points()获取那些时才会发生这种情况点。函数有什么问题?//putanyvectorpointsfromistintopointsvoidget_vector_points

c++ - 如何从具有 null(0) 字符的 char 数组创建 C++ istringstream?

我有一个char数组,它在随机位置包含空字符。我尝试使用这个数组(encodedData_arr)创建一个iStringStream,如下所示,我使用此iStringStream将二进制数据(Iplimage的图像数据)插入MySQL数据库blob字段(使用MySQLConnector/C++的setBlob(istream*is)),它只存储第一个空字符之前的字符。有没有办法使用带有空字符的char数组创建iStringStream?unsignedchar*encodedData_arr=newunsignedchar[data_vector_uchar->size()];//As

c++ - 为什么 istream_iterator<string>(ifstream ("test.txt")) 会导致错误?

我尝试编写代码从名为“test.txt”的文件中读取字符串并将字符串写入标准输出。下面的代码运行良好:intmain(){usingnamespacestd;ifstreamfile("test.txt");copy(istream_iterator(file),istream_iterator(),ostream_iterator(cout,""));}但是,通过此修改,代码不再编译:intmain(){usingnamespacestd;copy(istream_iterator(ifstream("test.txt")),//(),ostream_iterator(cout,""