如何使用std :: cout执行以下操作?
double my_double = 42.0;
char str[12];
printf_s("%11.6lf", my_double); // Prints " 42.000000"
Run Code Online (Sandbox Code Playgroud)
我准备放弃并使用sprintf_s.
更一般地说,我在哪里可以找到std :: ostream格式的引用,它在一个地方列出所有内容,而不是在长篇教程中全部展开?
编辑2017年12月21日 - 请参阅下面的答案.它使用了我在2012年提出这个问题时无法使用的功能.
如果我有一个程序创建并尝试使用mkfifo打开命名管道,如何打开管道进行读取或写入而不阻塞?
具体来说,我正在编写一个可以使用或不使用gui(用Java编写)运行的C程序.
在C程序中,我使用mkfifo成功创建了命名管道,但是当我这样做时
FILE* in = fopen(PIPE_IN, "r"); /* Where PIPE_IN is the filename*/
Run Code Online (Sandbox Code Playgroud)
在GUI打开该管道进行写入之前,fopen不会返回.我想做的是让管道准备好被读取一次(如果)GUI决定写入它 - 我将把文件描述符放在select()调用中.期望java GUI可能永远不会真正启动是合理的,所以我不能依赖它在任何特定点甚至根本不能打开管道的另一端.
我还将打开第二个管道进行写作,我想我会遇到同样的问题.此外,我不能在没有读卡器的输出管道上设置O_NONBLOCK.
有什么建议?
(这是在linux系统上运行的)
我想使用OpenCV的图像处理功能,但不是OpenCV GUI.我正在使用OpenCV 2.0.我将使用Qt4或WxWidgets来实现GUI功能.我用VC++ 2008 Express(VC++ 9.0)编译.
我想它分为两三个问题:
是否有必要做一些事情来禁用OpenCV的higui,这样它就不会干扰首选的GUI库,如果是这样,怎么做?
如何将OpenCV图像转换为首选GUI可以显示(也可能保存)的某些内容(位图?)?
(可选)如何将使用首选界面加载的图像转换为OpenCV可以使用的表单?
似乎我所有的成年生活都受到VC++链接器的折磨或抱怨,因为各种库都不同意使用哪个版本的Runtime库.我从来没有心情去掌握那个令人沮丧的话题.所以我只是试着搞砸它直到它起作用.错误消息永远不会有用.关于这个问题的微软文档也没有 - 至少对我来说不是.
有时它找不到函数 - 因为名称错误不是预期的?有时它拒绝混合搭配.其他时候它只是说,"LINK:警告LNK4098:defaultlib'LIBCMTD'与使用其他库冲突;使用/ NODEFAULTLIB:库" 使用/ NODEFAULTLIB不起作用,但警告似乎是良性的.到底是什么"DEFAULTLIB"?链接器如何决定?我从来没有见过一种方法来指定链接器使用哪个运行时库,只是告诉编译器哪个库创建函数调用.
有"依赖性walker"程序可以检查目标文件以查看它们依赖的DLL.我刚刚在一个正在尝试构建的项目上运行了一个,这真是一团糟.有系统.libs和.dll需要冲突的运行时版本.例如,COMCTL32.DLL需要MSVCRT.DLL,但我正在与MSVCRTD.DLL链接.我正在寻找是否有COMCTL32D.DLL,即使我输入.
所以我想我要求的是如何对这些东西进行排序的教程.你做什么,你怎么做?
这就是我想我所知道的.如果有任何错误,请纠正我.
参数是Debug/Release,Multi-threaded/Single-threaded和static/DLL.仅涵盖八种可能组合中的六种.没有单线程DLL,无论是Debug还是Release.
这些设置仅影响链接到哪个运行时库(以及与之链接的调用约定).例如,如果要构建DLL,则不必使用基于DLL的运行时,在构建程序的Debug版本时也不必使用Debug版本的运行时,尽管它似乎有助于单个踩过系统调用.
奖金问题:任何人或任何公司怎么会造成这样的混乱?
我有一个jpeg.当然,它的颜色配置文件是sRGB.我将它加载到"图像"并调用
cvCvtColor(image, gray, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)
将其转换为灰度.当我在调试器中进入该例程时,我发现它将像素乘以这些值:
#define cscGr_32f 0.299f
#define cscGg_32f 0.587f
#define cscGb_32f 0.114f
Run Code Online (Sandbox Code Playgroud)
Waaaait一分钟.这些是NTSC RGB的亮度值,而不是sRGB.此外,我无法看到它正在做任何有关伽马校正的事情.我很迷惑.当OpenCV对图像进行解码时,是否会删除伽马校正并转换为NTSC RGB?
奖金问题:大师们有没有OpenCV论坛?我用Google搜索是徒劳的.
我编写了传统的C++代码,用于生成统一的随机数和高斯分布.它实现了George Marsaglia博士非常快的算法.(我正在使用它们为蒙特卡洛高维集成生成skazillions样本.)
我认为重新考虑生成器和分发以使用新的C++ 11 std :: random方案是个好主意.
任何人都可以指向我的std :: random的教程或一个很好的参考,其中包括如何扩展它的必要信息?示例代码是理想的.
UPDATE.谢谢大家的帮助.我现在已经为Visual C++ 2010附带的std :: normal_distribution写了一个替代品.在我的机器上,当由默认引擎提供时,替换速度提高了26%.我有点失望,差异不大,但嘿,这是我的问题.:-)
我在Boost文档的一个例子中遇到了这段代码:
std::vector<int> input;
input += 1,2,3,4,5,6,7,8,9;
Run Code Online (Sandbox Code Playgroud)
真可爱.Boost有一个operator + =的模板,它利用了逗号在大多数情况下是一个操作符的事实.(明智的是,C++不允许黑客超载" 运算符 ".)
我也喜欢编写可爱的代码,所以我用逗号操作符来玩一些.我找到了一些看起来很奇怪的东西.您认为以下代码将如何打印?
#include <iostream>
int main() {
int i;
i = 1,2;
std::cout << i << ' ';
i = (1,2);
std::cout << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
你猜到了.VC++ 2012打印"1,2".那是怎么回事?
[编辑:我应该更精确.本来应该说C++不允许运算符","在一个int的列表中被重载.或者更好,没什么.可以为类和枚举重载','运算符.]
我想从a读取,std::istream直到找到一定数量的字符,即,我想实现以下接口:
void read_until (std::istream &is, std::string_view needle);
Run Code Online (Sandbox Code Playgroud)
使用std::istreambuf_iterator,我相信这相当于std::search单通道迭代器的组合.不幸的是,std::boyer_moore_searcher需要随机访问迭代器.
使用C++标准库(以及与大小成比例的一点内存sv)是否有上述接口的简单实现,或者我是否必须自己编写代码?
它适用于普通的香草功能.下面的代码工作得很好.它打印的应该是什么:
int __cdecl(int, char)
2
int,char
Run Code Online (Sandbox Code Playgroud)
#include <boost/type_traits.hpp>
#include <boost/function.hpp>
#include <boost/typeof/std/utility.hpp>
#include <iostream>
using std::cout;
using std::endl;
int foo(int, char) {
return 0;
}
int main() {
typedef BOOST_TYPEOF(foo) foo_type;;
typedef boost::function_traits<foo_type> function_traits;
cout << typeid(foo_type).name() << endl;
cout << function_traits::arity << endl;
cout << typeid(function_traits::arg1_type).name() << ",";
cout << typeid(function_traits::arg2_type).name() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是,如果foo是类栏的成员函数,怎么能这样做呢?
struct bar {
int foo(int, char) { return 0; }
};
Run Code Online (Sandbox Code Playgroud)
我尝试过这些结构的无数组合:BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()BOOST_TYPEOF_REGISTER_TYPE()boost :: ref boost :: remove_pointer boost :: bind boost :: …
我写了一个wxPython程序,我正在翻译成wxWidgets.该程序有一个滚动窗口,显示图像.在Rappin,wxPython In Action(清单12.1)之后,我在一个面板中使用了StaticBitmap.在浏览最新的wxWidgets文档时,我发现了一个可怕的警告:wxStaticBitmap应该只用于非常小的图像.它说,"......如果你想要便携地显示更大的图像,你应该使用自己的控制." 好的.给我看看.我没有"自己的控制权".
拉平错了,或文件是否过时了?
问题 - 一个新手,毫无疑问 - 是什么是在wxWidgets中做一个简单的图像视图窗口的正确方法?wxStaticBitmap的直接替代品会很好.我查看了wxWidgets"samples"目录中的"image"程序.这是一场战争与和平. 当然必须有罐头类或简单的食谱.