草庐IT

basic_istream

全部标签

c++ - 错误 : cannot bind ‘std::basic_ostream<char>’ lvalue to ‘std::basic_ostream<char>&&’

我已经看过几个关于这个的问题,特别是Overloadingoperator&&’很有帮助。它让我知道我的问题是我正在做一些c++11无法从中推断出类型的事情。我认为我的问题的很大一部分是我正在使用的实例化类是模板化的,但最初是从指向非模板基类的指针中获得的。这是我从另一个关于如何将模板类对象放入STL容器的stackoverflow.com问题中建议的。我的课:classDbValueBase{protected:virtualvoid*null(){returnNULL;}//Neededtomakeclasspolymorphic};templateclassDbValue:pub

c++ - 如何计算 std::basic_string<TCHAR>

我正在尝试找出basic_string.但是cout正在抛出错误。我能知道怎么做吗 最佳答案 正如dauphic所说,std::wcout用于宽字符串,std::cout用于窄字符串。如果您希望能够为任何一种类型的字符串进行编译(TCHAR旨在使这种事情变得更容易),这样的事情有时会让生活变得更轻松:#ifdefined(UNICODE)||defined(_UNICODE)#definetcoutstd::wcout#else#definetcoutstd::cout#endif使用tcout代替。

c++ - 从 istream 到 ostream 的快速受控复制

我必须将几个字节从istream复制到ostream,我知道执行此复制的方法有两种。myostream和copy(istreambuf_iterator(myistream),istreambuf_iterator(),ostreambuf_iterator(myostream));我发现rdbuf版本的速度至少是copy的两倍。我还没有找到复制的方式,比如100个字节,但是由于要复制的大小可能会很大,如果可能的话,我希望能够使用rdbuf版本。如何将这些拷贝限制为给定的字节数? 最佳答案 你可以使用0x吗?如果是这样,那么您可以使

c++ - C++ 标准中与 [basic.link]/7 相关的 GCC 和 clang 之间的矛盾结果

这段代码在clang中编译,namespaceA{voidf(){voidg();g();}}voidA::g(){}但如果g在命名空间A中定义如下,GCC只接受代码:namespaceA{voidf(){voidg();g();}voidg(){}}但我相信[basic.link]/7中没有任何内容不允许上面的第一个片段。 最佳答案 [basic.link]/p7,强调我的:Whenablockscopedeclarationofanentitywithlinkageisnotfoundtorefertosomeotherdecl

c++ - 如何避免错误:在抛出 'std::logic_error' 的实例后调用终止 what(): basic_string::_S_construct null not valid

if(player!=NULL)player->shuffled();我这样做是为了避免将空引用传递给字符串构造函数,但是在编译时仍然会出错。 最佳答案 不知何故,您正在调用std::string构造函数,其中constchar*值为NULL。为了避免这个问题。不要那样做。 关于c++-如何避免错误:在抛出'std::logic_error'的实例后调用终止what():basic_string::_S_constructnullnotvalid,我们在StackOverflow上找到一

c++ - 有没有办法检查 istream 是否以二进制模式打开?

我正在使用一个istream,它可以是stringstream、ifstream或用户定义的流类型,我需要知道如果是ifstream,它是否没有以二进制模式打开(所以我可以抛出异常)。我试过以下方法:if((_is.flags()&ios::binary)==0)throwexception(...)但是从来没有抛出异常。在这种情况下测试失败,因为_is.flags()返回0x201而ios::binary是0x20。有没有办法确定流是否以文本模式打开? 最佳答案 flags()返回ios_base::fmtflags这是格式化标志

c++ - 为什么从 std::istream 读取记录结构字段失败,我该如何解决?

假设我们有以下情况:一个记录结构声明如下structPerson{unsignedintid;std::stringname;uint8_tage;//...};记录使用以下格式存储在文件中:IDForenameLastnameAge------------------------------1267867JohnSmith3267545JaneDoe368677453GwynethMiller5675543J.RossUnusual23...应该读入该文件以收集任意数量的上述Person记录:std::istream&ifs=std::ifstream("SampleInput.tx

c++ - 为什么 basic_string::swap 不是 noexcept?

我刚刚发现basic_string的两个交换函数(成员函数和命名空间std中的函数)没有用noexcept声明——既不是在GCC-4.8的标准库中,也不是在最新的C++草案N3690。另一方面,移动构造函数和移动赋值运算符是用noexcept声明的。这说明应该可以提供noexcept交换函数。问题:没有用noexcept声明交换函数的原因是什么?更新:问题是我想在我自己的交换函数中使用一个模板函数,它使用static_assert来检查交换实际上是noexcept,例如:structfoo{bar_tbar;baz_tbaz;voidswap(foo&rhs)noexcept{swap

c++ - 无法将参数 'std::basic_string<char>' 的 'const char*' 转换为 '1' 到 'int system(const char*)'

当我尝试编译我的脚本时,我收到此错误:“'constchar*'和'constchar[6]'类型的无效操作数到二进制'operator+'”。这里应该是错误:stringname="john";system("quickscan.exeresolution300selectscannerjpgshowuishowprogressfilename'"+name+".jpg'"); 最佳答案 表达式的类型"quickscan.exeresolution300selectscannerjpgshowuishowprogressfilen

c++ - 错误] 无法通过 'std::string {aka class std::basic_string<char>}' 传递非平凡可复制类型 '...' 的对象

#include#includemain(){intbr_el[6],i;std::stringqr_naziv[6];qr_naziv[0]="Bathtub";qr_naziv[1]="Sink";qr_naziv[2]="Washingmachine";qr_naziv[3]="Toilet";qr_naziv[4]="Kitchensink";qr_naziv[5]="Dishwasher";for(i=0;i这个程序要长得多,所以我把它缩短了..问题是,我将为数组br_el[6]输入数字,我希望它显示我输入的数字是什么对象!因此,当我尝试编译时,它给了我错误:“[Error]