草庐IT

c++ - cout在哪里声明?

我的计算机科学教授要我们找到cout的声明。我使用g++和-E参数编译了一个简单的Helloworld程序。这是我的hello.cpp的样子:#includeusingnamespacestd;intmain(){stringname="";cout>name;cout我的编译命令:g++-Ehello.cpp>hello.p在hello.p中,我在VIM中进行了搜索,如下所示::/cout我看到以下行:externostreamcout;那是cout的声明,cout是ostream类的一个实例吗?编辑:那里的wcout声明是做什么用的?如果我没记错的话,字母“w”代表“宽”,但我不知

c++ - 线程安全的 cout 技术。我错过了什么吗?

我正在为一个游戏项目处理一些多线程代码,对同时使用cout调试消息的两个线程创建的stdout呕吐物进行排序有点厌倦了。我做了一些研究,盯着一堵墙看了一两个小时,然后才想到“某事”。以下代码使用SFML进行计时和线程化。SFML互斥锁只是包装在窗口中的关键部分。标题:#include#includeclassOutputStreamHack{public:OutputStreamHack();~OutputStreamHack();ostream&outputHijack(ostream&os);private:sf::ClockmyRunTime;sf::MutexmyMutex;}

C++ : cout with a terenary if-statement

我得到这个错误:“错误:没有上下文类型信息的重载函数”。cout我正在做的事情可行吗?我只是做错了,还是我必须重载 最佳答案 它不会那样工作(即使你修复了优先级错误)。这里有两个问题,第二个比第一个更严重。第一个问题是std::endl是一个模板。它是一个函数模板。模板必须是专门的。为了专门化该模板,编译器必须知道(推断)模板参数。当你做的时候std::coutoperator期望的特定函数指针类型是编译器用来弄清楚如何专门化std::endl的东西模板。但是在您的示例中,您基本上“分离”了std::endl来自operator通过

c++ - 你如何使用 cout 输出符号?

如何使用cout输出\符号? 最佳答案 使用两个反斜杠\\ 关于c++-你如何使用cout输出符号?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1650981/

c++ 将 printf 与 wprintf 混合(或将 cout 与 wcout 混合)

我知道您不应该将打印与printf,cout和wprintf,wcout混合使用,但是很难找到一个好的答案,为什么以及是否可以绕过它。问题是我使用了一个用printf打印的外部库,而我自己使用了wcout。如果我做一个简单的例子,它工作正常,但从我的完整应用程序来看,它根本不打印printf语句。如果这真的是一个限制,那么就会有许多库无法与广泛的打印应用程序一起工作。我们非常欢迎对此有任何见解。更新:我把它归结为:#include#include#include#include#includeintmain(){char*buf;std::wcout所以我想这可能是冲水问题,但我还是觉

c++ - 限制 std::cout 中 boost::options_description 中默认值的精度

当我构建一个boost::options_description实例时options.add_options()("double_val",value(&config.my_double)->default_value(0.2),"it'sadouble");然后想自动输出可用于我的程序的选项,然后把std::cout默认值0.2显示的精度太高,当我有长变量名时,这会有效地扰乱我的输出:--double_val(=0.20000000000000001)it'sadouble不幸的是,之前对std::cout.precision的调用没有帮助:cout.precision(5);std

C++ cout 副作用排序

假设如下一段代码:#includeusingnamespacestd;charone(){cout执行标记为1和2的行,用ideone编译会做同样的事情,它打印如下:twoone12在我看来,我们在这里观察到的是未指定的行为,因为解析函数参数的顺序是未指定的。这是面试中的一道题,打印上面给定的序列(没有任何替代)应该是正确答案,但它真的正确吗? 最佳答案 你是对的,面试官表现出对语言及其规则缺乏理解的可怕普遍现象。这两行是严格等价的,当且仅当operator为第一行调用的总是一个自由函数(标准说它们是)。正如您所想的那样,函数调用之

c++ - cout 和 cin 不是函数,那么它们是什么?

一般在C语言中我们认为printf和scanf是函数。当谈到cout和cin时,在C++中它们是什么?我的意思是它们不能是函数,因为它们后面没有括号,所以它们不是函数。那么什么是cout和cin是标准输入输出函数?还是别的? 最佳答案 std::cout和std::cin是类的全局对象std::ostream和std::istream他们分别重载了运算符和>>.你应该阅读operatoroverloading.cout这就像一个函数调用;该函数是一个重载运算符和一个快捷方式:cout.operator或者这个:operator取决于

c++ - 如何将ostringstream直接写入cout

如果我有一个std::ostringstream对象称为oss,我明白我能做到std::cout打印出字符串。但是做oss.str()将导致返回的字符串被复制。有没有办法直接打印底层streambuf?提前致谢! 最佳答案 如果您使用std::ostringstream则不会.无法从中读取底层缓冲区(因此ostringstream中的o),因此您必须依靠实现来为您完成,通过str()。但是,如果您使用std::stringstream(注意缺少o),那么底层缓冲区是可读的,并且basic_ostream有一个特殊的重载用于从缓冲区读

c++ - cout << setw 没有与 åäö 正确对齐

以下代码重现了我的问题:#include#include#includevoidp(std::strings,intw){std::cout这会产生以下输出:COL_ACOL_BCOL_CABCÅÄÖABC如果我将代码中的“ÅÄÖ”更改为例如“ABC”,然后它起作用了:COL_ACOL_BCOL_CABCABCABC为什么会这样? 最佳答案 除了为std::wcout注入(inject)适当的语言环境外,您可能还必须切换到宽字符串。例如:voidp(std::wstrings,intw){std::wcoutDemo