草庐IT

prinf-cout

全部标签

c++ - 用 std::cout 正确地用零填充负整数

我发现这个问题已经问过了,但大家给出的答案是std::cout这对于正数来说很好,但对于-5,它会打印:000-5有没有办法让它打印-0005或强制cout总是打印至少5位数字(这将导致-00005),就像我们可以使用printf一样? 最佳答案 std::cout输出:-0005std::internal编辑:对于那些关心这些事情的人,N3337(~c++11),22.4.2.2.2:ThelocationofanypaddingisdeterminedaccordingtoTable91.Table91-FillpaddingS

c++ - 我怎样才能 cin 和 cout 一些 unicode 文本?

我问一个代码片段,它输入一个unicode文本,将另一个unicode连接到第一个unicode文本,然后输出结果。附:这段代码将帮助我解决另一个更大的unicode问题。但在关键是完成我的要求之前。添加:顺便说一句,当我运行可执行文件时,我无法在命令行中写入任何unicode符号。我应该怎么做? 最佳答案 我过去也遇到过类似的问题,就我而言,imbue和sync_with_stdio解决了问题。试试这个:#include#include#includeusingnamespacestd;intmain(){ios_base::sy

c++ - std::cout 和 std::wcout 有什么区别?

在c++中std::cout和std::wcout有什么区别?它们都控制输出到流缓冲区或将内容打印到控制台,或者它们只是一样的? 最佳答案 它们作用于不同的字符类型:std::cout使用char作为字符类型std::wcout使用wchar_t作为字符类型否则两个流都写入标准输出。 关于c++-std::cout和std::wcout有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

c++ - 为什么这段使用 printf 和 cout 的代码没有预期的输出?

我有以下代码:intmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);for(inti=0;i这段代码的预期输出是:001122但是,它会打印:012012此问题发生在GNUG++4.9.2编译器中 最佳答案 对此的一种可能解释是cout和printf使用单独的缓冲区。当使用endl命令刷新或缓冲区已满(通常为512字节)时,cout在终端屏幕上输出。我不确定printf(如果我错了,请随时纠正我),但它也遵循类似的行为。所以会发生的是,在程序结束时,两个缓冲区都被刷新,所以

c++ - 使用 cout 以精度 4 打印 double

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:ConvertadoubletofixeddecimalpointinC++假设,我有doublea=0并且我想将其打印为0.0000。我试过了:cout.precision(4);cout但它给出了0作为输出。 最佳答案 试试吧:#include...cout见here. 关于c++-使用cout以精度4打印double,我们在StackOverflow上找到一个类似的问题: htt

c++ - 带 cout 的无缓冲输出

如何从cout获得无缓冲的输出,使其立即写入控制台而无需刷新(类似于cerr)?我认为可以通过rdbuf()->pubsetbuf来完成,但这似乎不起作用。下面的代码片段应该立即输出到控制台,然后等待几秒钟。但相反,它只是等待,并且仅在程序退出并且缓冲区被刷新时才输出。#includeintmain(){std::cout.rdbuf()->pubsetbuf(0,0);std::cout 最佳答案 您可以设置std::ios_base::unitbufflag通过调用std::ios_base::setf在每次输出操作后刷新输出:

c++ - 死锁使用 std::mutex 保护多线程中的 cout

在多个线程中使用cout可能会导致交错输出。所以我尝试用互斥锁来保护cout。以下代码使用std::async启动10个后台线程。当一个线程启动时,它会打印“Startedthread...”。主线程按照后台线程的创建顺序迭代它们的future,并在相应线程完成时打印出“Donethread...”。输出已正确同步,但在一些线程启动和一些线程完成后(见下面的输出),发生死锁。所有后台线程都离开了,主线程正在等待互斥锁。死锁的原因是什么?当print函数离开或for循环的一次迭代结束时,lock_guard应该解锁互斥锁,以便其中一个等待线程能够继续。为什么所有的线程都饿死了?代码#in

c++ - 使用 "<<"时使用 "+"或 "cout"将字符串放在一起

我见过人们同时使用“cout对比:cout使用“ 最佳答案 我会说最好使用在那种特殊情况下。否则,串联会导致临时可能无故分配内存。 关于c++-使用" https://stackoverflow.com/questions/14389710/

c++ - 多个线程写入 std::cout 或 std::cerr

我有通过cout和cerr写入控制台的OpenMP线程。这当然是不安全的,因为输出可以交错。我可以做类似的事情#pragmaompcritical(cerr){cerr如果可以将cerr替换为线程安全版本会更好,类似于valgrindDRD手册(http://valgrind.org/docs/manual/drd-manual.html#drd-manual.effective-use)中解释的方法,该方法涉及从std::ostreambuf派生一个类。理想情况下,最后我会用我自己的线程cerr替换cerr,例如简单地说:tcerr这样的类可以在遇到“endl”时立即打印到控制台。我

c++ cout << [double] 不打印小数位

我有一个简单的C++程序,我认为它会将f和g中定义的double值打印为double值……但C++将它们打印为整数。我检查了cout的默认精度,当我运行它时,输出显示默认精度应该是6,所以我很困惑为什么double不能正确打印。#include#includeintmain(){doublef=735416.416898;doubleg=f+0.3;std::cout我看到的输出是:kiran@kiran-VirtualBox:~/test$g++-otesttest.cppkiran@kiran-VirtualBox:~/test$./test[c++]f=735416[c++]g=