
编程心得
aseity
这个作者很懒,什么都没留下…
展开
-
invalid locale name in docker
随着 docker 在客户企业的大量应用,docker 客户机中,locale 没有正确配置的情况并不少见。这导致某些软件报 不支持的 locale name 的错误。原创 2022-01-23 21:44:08 · 847 阅读 · 0 评论 -
一种 VC release 编译极慢的原因和解决办法
问题描述:本人使用的是 Visual C++ 2008 。一直使用正常。最近发现项目在 release 时编译极慢,要6~10分钟不等,无法忍受。在慢的时候,输出窗口显示“正在生成代码”。原因分析:调试了各种编译选项,均不奏效。后来分析代码,发现问题出现在某个特定的 cpp.这个 cpp 的独特之处在于有一个很大的字节数组的常量初始化。例如cha原创 2017-01-18 17:31:07 · 6165 阅读 · 1 评论 -
去除 boost::format lexical_cast 输出的整数中的千分位符
用 boost::format 和 boost::lexical_cast 使得数据和字符串的互转方便又安全。但是最近遇到将整数转换为字符串时,结果总是有逗号作为千分位符。千分位符实际上是受 locale 控制的,去掉去掉千分位符的方法就是修改全局的 locale。在网上搜到一篇帖子,解决了我的问题。记之以备忘。http://blog.youkuaiyun.com/koudaidai/arti原创 2015-09-05 23:31:05 · 2094 阅读 · 0 评论 -
用boost locale库进行字符集转换的问题
1: Five Chinese words[白日依山尽]_by macro L2: Five Chinese words[请按任意键继续. . .本想用 boost::locale::conv::to_utf 写一个将 std::string 转换为 std::wstirng 的函数以达到简化接口形式,并且代码可以跨平台的目的。然而 MSVC 2010 在 Windows 10上测试原创 2015-09-09 11:48:50 · 9160 阅读 · 2 评论 -
OpenCV 中 16bit 图像的 Histograms
今天希望获得16bit图像的直方图,想用 OpenCV 的 Histograms 。总是不成功,但也不报错。看了 calcHist 源码才知道 OpenCV 中的 Histograms 只能处理 CV_8U 和 CV_32F 的直方图,但对于其它类型的数据,直接忽略,所以不报错。因此欲处理 16bit 图像,需先读到 CV_16UC1 的 Mat 中,然后转换为 CV_32FC1, 再原创 2013-08-23 00:17:47 · 1931 阅读 · 1 评论 -
NetCDF-C++ 4.4.2 中 NcException 的Bug
现象:try { .... } catch ( NcException &e ) { cout << e.what() << endl; return -1;}以上代码用于当有 NcException 异常时,打印异常内容,结束当前函数。实际是打印出的信息是乱码而非预期的异常信息。 原因分析:以下是NcException::what 的源码co原创 2013-05-01 15:13:11 · 1063 阅读 · 0 评论 -
boost program option 库处理中文命令行
boost 的 program option 为处理复杂的命令行提供方便。若用 VS2005 以上版本来编译程序,则当程序处理包含中文的命令行是将可能抛“charactor conversion fail” 的异常。现将测试后的经验总结如下: 先看一段代码: #include "stdafx.h"#include #include #include #inc原创 2013-04-24 20:09:39 · 1704 阅读 · 0 评论 -
用boost asio 获取本地IP遇到"host not found"的问题
为了能够在不同平台上获得本机的IP地址,按照boost的例子写了一个获取本地IP的测试程序 getip。 #include #include using boost::asio::ip::tcp;main() { boost::asio::io_service io_service; tcp::resolver resolver(io_servi原创 2012-02-01 19:51:33 · 11413 阅读 · 0 评论 -
获得子进程的返回值
在linux中用C语言调用另外一个进程的简单办法就事调用 system() 函数.但需要注意的是 system 并非直接调用指定的进程,而是调用 /bin/sh 来运行命令. 这使得返回值并非被调用进程的返回值.宏 WIFEXITED 和 WEXITSTATUS 接合起来可以判断被调用进程的返回值.int ret = system(sCMD.c_str());if (WIFEXITED原创 2008-11-26 12:53:00 · 2831 阅读 · 1 评论