草庐IT

ostream_iterator

全部标签

c++ - 为什么 range-for 找不到我对 std::istream_iterator 的开始和结束重载?

我有这样的代码std::ifstreamfile(filename,std::ios_base::in);if(file.good()){file.imbue(std::locale(std::locale(),newdelimeter_tokens()));for(auto&entry:std::istream_iterator(file)){std::cout哪里std::istream_iterator的begin()和end()定义如下templatestd::istream_iteratorbegin(std::istream_iterator&stream){returns

c++ - '_ITERATOR_DEBUG_LEVEL' : value '0' doesn't match value '2' 检测到不匹配

使用VS2010构建时,我正在构建一个导致许多此类链接错误的库:errorLNK2038:mismatchdetectedfor'_ITERATOR_DEBUG_LEVEL':value'0'doesn'tmatchvalue'2'导致我必须同时发布我的库的发行版和调试版。我没有理由发布lib的调试版本,它只会使二进制分发版膨胀。但是在调试中构建的客户端代码拒绝链接到我的发布库。我以前见过这个问题,但他们似乎没有问正确的问题。我明白这个错误是什么,以及为什么我会得到它(好吧,有点;我不确定到底是什么发出了依赖性。你呢?),但我想知道的是如何消除这种依赖性的发生在我的库中?类似于在使用冲

c++ - basic_istream<>::tellg() 和 basic_ostream<>::tellp() 的区别

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我只是想知道为什么成员函数tellg()在basic_istream中定义类和tellp()在basic_ostream中定义类有不同的名称。是因为basic_fstream源自basic_istream和basic_ostream?

c++ - 从 std::istreambuf_iterator 创建 std::string,奇怪的语法怪癖

我在某处发现了以下用于将文件读入字符串的习语:std::ifstreamfile("path/to/some/file.ext");std::stringcontents(std::istreambuf_iterator(file),(std::istreambuf_iterator()));它现在工作得很好。但是,如果我删除第二个迭代器参数周围的括号,即:std::stringcontents(std::istreambuf_iterator(file),std::istreambuf_iterator());一旦我尝试在字符串对象上调用任何方法,例如:constchar*buffe

c++ - 为什么 ostream_iterator 没有按预期工作?

下面的代码就不用多说了:#include#include#include#includeusingnamespacestd;typedefpairPAIR;ostream&operatorcoll;cout(cout));} 最佳答案 问题是名称查找没有找到您的operator.尝试调用operator的代码在ostream_iterator里面的某个地方它本身在std中命名空间。名称查找在ostream_iterator中四处寻找正确的函数和std命名空间;参数依赖查找在这里没有帮助,因为两个参数都在std中命名空间也是如此。因此

c++ - 对 'std::istreambuf_iterator' 的用法感到困惑

以下是anexamplefromcppreference.com,TheCodeis:#include#include#include#includeintmain(){//typicalusecase:aninputstreamrepresentedasapairofiteratorsstd::istringstreamin("Hello,world");std::vectorv((std::istreambuf_iterator(in)),std::istreambuf_iterator());std::couti1(s),i2(s);std::cout我有两个问题:有人可以详细说

c++ - 我们可以存储 unordered_map<T>::iterator 吗?

引用http://www.careercup.com/question?id=17188673来自chetan.j9voidInsert(strings){if(IsElementPresent(s))return;myMap[s]=myMapVector.size();unordered_map::iteratorit=myMap.find(s);myMapVector.push_back(it);}问题>我们可以存储unordered_map的迭代器供以后检索吗?根据我的理解,插入或删除元素后迭代器将失效。谢谢 最佳答案 @sy

c++ - libstdc++ 中的 ostream operator<< 是线程敌对的吗?

ostream运算符(operator)使用num_put::put()用于数字格式化。我正在尝试遵循代码。我将链接到OSX文件,但类似的文件出现在我看过的其他一些系统上。在我看来num_put::put()电话num_put::do_put(),它调用num_put::_M_insert_float(),这calls__convert_from_v():http://www.opensource.apple.com/source/libstdcxx/libstdcxx-60/include/c++/4.2.1/bits/c++locale.hhttp://www.opensource

c++ - 为什么 std::(i)ostream 将有符号/无符号字符视为文本而不是整数?

这段代码没有做它应该做的事情:#include#includeintmain(){uint8_tsmall_integer;std::cin>>small_integer;std::cout原因很简单:uint8_t是unsignedchar的类型定义流将此类型视为文本:VisualC++2015实现templateinlinebasic_istream&operator>>(basic_istream&_Istr,unsignedchar&_Ch){//extractanunsignedcharreturn(_Istr>>(char&)_Ch);}还有一个类似的代码转换为char对于

c++ - boost::filter_iterator——我将如何使用 STL 做到这一点?

我收到了一个迭代器,我必须将它传递给另一个函数——但经过过滤以便跳过某些元素(这是一个指针范围,我想过滤掉NULL指针)。我在谷歌上搜索了“STLfilteriterator”以查看如何执行此操作,并且boost::filter_iterator上来了。这看起来不错,我可以使用它,但我也可以使用良好的旧STL来实现吗?当然,无需将元素复制到新容器中。我想我必须创建另一个迭代器类来提供必要的begin()、end()等函数并进行过滤?所以我必须重新实现boostiterator_filter...? 最佳答案 你是对的;您实际上是在自