小编Jiv*_*son的帖子

std :: ostream的浮点格式

如何使用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年提出这个问题时无法使用的功能.

c++ floating-point cout ostream

38
推荐指数
5
解决办法
6万
查看次数

如何在命名管道(mkfifo)上执行非阻塞fopen?

如果我有一个程序创建并尝试使用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系统上运行的)

c linux named-pipes fifo blocking

19
推荐指数
1
解决办法
3万
查看次数

在Win32 VC++上使用其他GUI(如Qt或WxWidgets)的OpenCV

我想使用OpenCV的图像处理功能,但不是OpenCV GUI.我正在使用OpenCV 2.0.我将使用Qt4或WxWidgets来实现GUI功能.我用VC++ 2008 Express(VC++ 9.0)编译.

我想它分为两三个问题:

  1. 是否有必要做一些事情来禁用OpenCV的higui,这样它就不会干扰首选的GUI库,如果是这样,怎么做?

  2. 如何将OpenCV图像转换为首选GUI可以显示(也可能保存)的某些内容(位图?)?

  3. (可选)如何将使用首选界面加载的图像转换为OpenCV可以使用的表单?

qt wxwidgets opencv image-processing

17
推荐指数
2
解决办法
2万
查看次数

运行时库错误匹配和VC++ - 哦,痛苦!

似乎我所有的成年生活都受到VC++链接器的折磨或抱怨,因为各种库都不同意使用哪个版本的Runtime库.我从来没有心情去掌握那个令人沮丧的话题.所以我只是试着搞砸它直到它起作用.错误消息永远不会有用.关于这个问题的微软文档也没有 - 至少对我来说不是.

有时它找不到函数 - 因为名称错误不是预期的?有时它拒绝混合搭配.其他时候它只是说,"LINK:警告LNK4098:defaultlib'LIBCMTD'与使用其他库冲突;使用/ NODEFAULTLIB:库" 使用/ NODEFAULTLIB不起作用,但警告似乎是良性的.到底是什么"DEFAULTLIB"?链接器如何决定?我从来没有见过一种方法来指定链接器使用哪个运行时库,只是告诉编译器哪个库创建函数调用.

有"依赖性walker"程序可以检查目标文件以查看它们依赖的DLL.我刚刚在一个正在尝试构建的项目上运行了一个,这真是一团糟.有系统.libs和.dll需要冲突的运行时版本.例如,COMCTL32.DLL需要MSVCRT.DLL,但我正在与MSVCRTD.DLL链接.我正在寻找是否有COMCTL32D.DLL,即使我输入.

所以我想我要求的是如何对这些东西进行排序的教程.你做什么,你怎么做?

这就是我想我所知道的.如果有任何错误,请纠正我.

  1. 参数是Debug/Release,Multi-threaded/Single-threaded和static/DLL.仅涵盖八种可能组合中的六种.没有单线程DLL,无论是Debug还是Release.

  2. 这些设置仅影响链接到哪个运行时库(以及与之链接的调用约定).例如,如果要构建DLL,则不必使用基于DLL的运行时,在构建程序的Debug版本时也不必使用Debug版本的运行时,尽管它似乎有助于单个踩过系统调用.

奖金问题:任何人或任何公司怎么会造成这样的混乱?

runtime libc msvcrt visual-c++

12
推荐指数
1
解决办法
4468
查看次数

OpenCV - 它如何处理颜色配置文件?

我有一个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搜索是徒劳的.

profile opencv colors image-processing

9
推荐指数
1
解决办法
1843
查看次数

使用生成器和发行版随机扩展c ++ 11的教程或示例代码

我编写了传统的C++代码,用于生成统一的随机数和高斯分布.它实现了George Marsaglia博士非常快的算法.(我正在使用它们为蒙特卡洛高维集成生成skazillions样本.)

我认为重新考虑生成器和分发以使用新的C++ 11 std :: random方案是个好主意.

任何人都可以指向我的std :: random的教程或一个很好的参考,其中包括如何扩展它的必要信息?示例代码是理想的.

UPDATE.谢谢大家的帮助.我现在已经为Visual C++ 2010附带的std :: normal_distribution写了一个替代品.在我的机器上,当由默认引擎提供时,替换速度提高了26%.我有点失望,差异不大,但嘿,这是我的问题.:-)

c++ random stl visual-studio-2010 c++11

8
推荐指数
1
解决办法
1356
查看次数

C/C++逗号运算符让我很困惑.语言律师?

我在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的列表中被重载.或者更好,没什么.可以为类和枚举重载','运算符.]

c++ visual-c++

8
推荐指数
2
解决办法
514
查看次数

std ::搜索单程范围

我想从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)是否有上述接口的简单实现,或者我是否必须自己编写代码?

c++ search iterator boyer-moore c++17

8
推荐指数
1
解决办法
171
查看次数

使用Boost获取arity和paramerter类型的成员函数?(升压:: function_traits)

它适用于普通的香草功能.下面的代码工作得很好.它打印的应该是什么:

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 :: …

c++ boost function member

7
推荐指数
1
解决办法
5710
查看次数

如何构建简单的wxWidgets图像显示

我写了一个wxPython程序,我正在翻译成wxWidgets.该程序有一个滚动窗口,显示图像.在Rappin,wxPython In Action(清单12.1)之后,我在一个面板中使用了StaticBitmap.在浏览最新的wxWidgets文档时,我发现了一个可怕的警告:wxStaticBitmap应该只用于非常小的图像.它说,"......如果你想要便携地显示更大的图像,你应该使用自己的控制." 好的.给我看看.我没有"自己的控制权".

拉平错了,或文件是否过时了?

问题 - 一个新手,毫无疑问 - 是什么是在wxWidgets中做一个简单的图像视图窗口的正确方法?wxStaticBitmap的直接替代品会很好.我查看了wxWidgets"samples"目录中的"image"程序.这是一场战争与和平. 当然必须有罐头类或简单的食谱.

wxwidgets image bitmap scrolledwindow

6
推荐指数
1
解决办法
1万
查看次数