草庐IT

cout_member

全部标签

C++ cout 给出未声明的标识符

所以,我有这个问题。为什么cout会抛出errorC2065:'cout':undeclaredidentifier我正在使用VisualStudio2012作为IDE,并且正在编写一个学校项目。除了示例文件外,我已经完成了所有工作。所以我想像这样在屏幕上写一些东西:#include"iostream"#include"stdafx.h"usingnamespacestd;intmain(){cout所以问题出在cout上……printf工作正常,但我想使用cout。编辑:我已将""更改为但它没有帮助。此外,我仅使用此代码作为示例...这不是整个项目。 最佳

c++ - 如何在 cout 上使用 isatty(),或者我可以假设 cout == 文件描述符 1?

好吧,基本上,主题说明了一切。我有一个命令行实用程序,可以使用管道或i/o重定向以交互方式或在脚本中使用。我正在为i/o使用cin和cout,如果输出是控制台,我想在最后写一个额外的EOL,这样用户提示将从下一行。在脚本中,这将是有害的。我可以假设cin==0,cout==1吗?我知道没有干净的方法来获取流的文件描述符。或者是? 最佳答案 如果使用Linux(可能还有其他unix,但绝对不是Windows),您可以尝试isatty.没有从C++流中提取文件描述符的直接方法。但是,由于在C++程序中cout和stdout都是同时存在和

c++ - 一元负重载 : member or non-member?

假定前缀一元运算符可以“由不带参数的非静态成员函数或带一个参数的非成员函数实现”(§13.5.1[over.unary]/1),除了适用于任何成员/非成员函数选择的通常封装/代码重用设计原理之外,还有什么区别吗?对于二元运算符,there'sasemanticdifference因为非成员允许对其左侧操作数进行隐式转换。一元运算符似乎没有类似的东西,但标准将std::complex的一元否定运算符定义为非成员(§26.4.6[complex.ops]),而std::valarray和std::duration的一元否定运算符是成员(§26.6.2.6[valarray.unary],§

c++ - enable_if : minimal example for void member function with no arguments

我试图更好地理解C++11中的std::enable_if并且一直在尝试编写一个最小的示例:一个类A带有成员函数voidfoo()根据类模板中的类型T具有不同的实现。下面的代码给出了期望的结果,但我还没有完全理解它。为什么版本V2有效,但V1无效?为什么需要“冗余”类型U?#include#includetemplateclassA{public:A(Tx):a_(x){}//EnablethisfunctionifT==int/*V1*///template::value,int>::type=0>/*V2*/template::value,int>::type=0>voidfoo(

c++ - 外部 "C"时无法使用 cout/endl

我希望有人能帮助我解决这个小问题,因为我一无所获。首先,这里是代码:#include#include#includeusingnamespacestd;extern"C"{#include#include}intmain(){intiQuit;cout它不会让我使用std的东西(即cout、cin、endl等)。只有当我取出所有外部“C”代码时,它才会允许我使用它……这是为什么呢?有办法解决这个问题吗?编辑:抱歉,忘了告诉你确切的错误:它说标识符“cout”未定义谢谢 最佳答案 你的编译环境有问题。该代码没有任何问题。它编译并运行良

c++ - 对齐 : warning C4316 in all classes that have aligned members

今天我遇到了很多麻烦,因为我跟踪了一个非常隐蔽的腐败漏洞。我想如果我真的注意警告就不会那么难找到它,但由于找不到有关为什么弹出此特定警告的相关信息,我让它滑动了,这是一个错误。所以这是VisualStudio2013给我的有罪警告:warningC4316:objectallocatedontheheapmaynotbealigned16它是在通过const引用将align(16)临时传递给构造函数时生成的,如以下代码所示:classVector{};__declspec(align(16))classVectorA{};classShape{public:Shape(constVec

c++ - 为什么 cout.imbue(locale ("")) 会导致内存泄漏?

我的编译器是VisualVC++2013。下面最简单的程序会导致一些内存泄漏。为什么?如何修复?#define_CRTDBG_MAP_ALLOC#include#include#include#include#includeusingnamespacestd;intmain(){_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);cout.imbue(locale(""));//Ifthisstatementiscommented,thenOK.}调试窗口输出如下:Detectedmemoryleaks!Dumpingo

c++ - 在函数中抑制 cout 输出

我正在使用一个共享库,它的函数到处都在执行std::cout。是否可以在调用者级别执行任何操作,其中我可以抑制coutoutout或将其重定向到某个位置?是否有可能在C++中尝试这样的事情。 最佳答案 像这样,只需为您的库调用制作函数包装器,即可重定向cout。intmain(void){std::ofstreamlStream("garbage.txt");std::streambuf*lBufferOld=std::cout.rdbuf();std::cout.rdbuf(lStream.rdbuf());std::cout

c++ - 错误 : invalid use of member in static member function

我有两个类,这是其中一个的标题:#ifndefWRAPPER_HPP#defineWRAPPER_HPP#includeusingnamespacestd;classWrapper{private://SDL_Surface*screen;public:staticSDL_Surface*screen;staticvoidset_screen(SDL_Surface*_screen);staticvoidset_pixel(intx,inty,Uint8color);staticvoidclear_screen(intr,intg,intb);staticSDL_Surface*loa

c++ cout << 不要在小数点前打印 '0'

我没有找到在小数点前没有“0”的情况下写入次于1的十进制数的解决方案。我想以这种格式显示数字:“.1”、“.2”等...使用:std::cout总是给我“0.1”、“0.2”等格式...我做错了什么?感谢您的帮助 最佳答案 您需要将其转换为字符串并用于打印。如果有的话,流无法打印没有前导零的float。std::stringgetFloatWithoutLeadingZero(floatval){//convertingthenumbertoastring//withyourspecifiedflagsstd::stringstre