小编Æle*_*lex的帖子

C++ sqrt返回-1.#IND000000000000

具体来说:

我正在进行一些数学运算,并且应用程序不断崩溃,因为广泛使用的double恰好得到了值:-1.当"某些"数字是sqrt'ed时的#IND000000000000 ...这是什么?不定?无穷?太大了吗?不是一个完美的平方根?有什么方法可以解决这个问题吗?提前致谢!编辑:我怎样才能检查双倍是否有这个值?我试过:if(x == 0x-1.#IND000000000000)和其他变种但是没有用.是否可以检查变量是否具有此值?

c++ sqrt

6
推荐指数
2
解决办法
5153
查看次数

OpenCV cv :: Mat to std :: ifstream for base64 encoding

说实话,我很惊讶到目前为止没有人遇到过这种情况.我正在将一张来自OpenCV的图片加载到cv :: Mat中,在我通过套接字发送之前,我想要base64编码.

对于base64,我使用的是libb64,因为它是Debian/Ubuntu的原生,并且易于使用且速度非常快.编码函数将std :: ifstream作为参数,并输出std :: ofstream.

#include <opencv2/opencv.hpp>
#include <b64/encode.h>
#include <fstream>

using namespace cv;
Mat image;
image = imread( "picture.jpg", CV_LOAD_IMAGE_COLOR );

if ( image.data )
{
    std::ifstream instream( ???, std::ios_base::in | std::ios_base::binary);
    std::ofstream outstream;        

    // Convert Matrix to ifstream
    // ...

    base64::encoder E;
    E.encode( instream, outstream );

    // Now put it in a string, and send it over a socket...
}
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何填充cv :: Mat的内流.谷歌搜索,我发现我可以通过列和行迭代cv :: Mat,并得到每个(我假设的像素)RGB值:

for ( …
Run Code Online (Sandbox Code Playgroud)

c++ base64 opencv stream

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

反序列化后,PHP类公共变量未定义

所以在某些时候,ajax调用会发送一个JSON,我将其转换为对象并存储在会话中:

    if ( $deps = json_decode( $raw_json, true ) )
    {   
        $pkgs = array();

        foreach ( $deps['vector'] as $key )
        {
            if ( strcasecmp( $key['package'], $key['component'] ) == 0 )
            {
                $package = new Package();
                $package->name = $key['package'];
                $package->version = $key['version'];
                $package->cxx_include = $key['cxx_inc'];
                $package->cxx_link = $key['cxx_link'];
                $pkgs[] = $package;
            }
            else
            {
                foreach( $pkgs as $package ) 
                {
                    if ( $package->name == $key['package'] )
                    {
                        $component = new Component();
                        $component->name = $key['component'];
                        $component->cxx_link = $key['cxx_link'];
                        $package->components[] = $component;
                    } …
Run Code Online (Sandbox Code Playgroud)

php json class

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

GTK窗口的活动窗口的X11屏幕截图失败

这是一个更大的研究项目的子项目.我试图每隔100ms拍摄一个活动窗口(浏览器)的屏幕截图,然后将其存储在内存中以供OpenCV处理.我从类似的问题中找到了截取屏幕截图的解决方案,我正在使用代码来查看是否可以使用它.在拍摄整个桌面截图或特定的窗口截图时,以下代码段似乎正在工作,但它不适用于GTK窗口.我试图在Debian Squeeze上截取Iceweasel和Nautilus的截图,但它根本不起作用.我在X11中是一个总菜鸟,并且不知道如何检查错误,或者我是否缺少GTK,因为这似乎适用于QT窗口.

typedef int (*handler)(Display *, XErrorEvent *);

int handleX11Error(Display *d, XErrorEvent *er)
{
   std::cout << "X11 Error: " << er->error_code << std::endl;
}

int main()
{
    std::cout << "Sleeping 5 seconds" << std::endl;
   // we may need to sleep if we want to focus another window.
   sleep(5); 
   std::cout << "taking screenshot" << std::endl;

   Display *display = XOpenDisplay(NULL);
   //Window root = DefaultRootWindow(display);
   XWindowAttributes gwa;
   int revert = RevertToNone;
   Window active;
   XErrorEvent *error;
   handler myHandler = &handleX11Error;
   XSetErrorHandler(myHandler);

   // X11 - …
Run Code Online (Sandbox Code Playgroud)

c c++ x11 gtk xlib

5
推荐指数
1
解决办法
1801
查看次数

Eigen :: RowVector迭代器

有人可以告诉我,我怎么能迭代一个Eigen :: RowVectorXf?

我已经通过网络和文档查找了3个小时,我能找到的所有内容都来自此链接,我可以通过以下方式访问它:

vector(i)
vector[i]
Run Code Online (Sandbox Code Playgroud)

我有一个:

auto vec = std::make_shared<Eigen::RowVectorXf>( rowIndex.size() ); 
Run Code Online (Sandbox Code Playgroud)

我想用字频率填充.

Eigen::RowVectorXf::InnerIterator it(vec); it; ++it
Run Code Online (Sandbox Code Playgroud)

不起作用,和

Eigen::RowVectorXf::Iterator it(vec); it; ++it
Run Code Online (Sandbox Code Playgroud)

不存在.

似乎唯一有用的是:

for ( int i = 0; i < vec->row( 0 ).size(); i++ )
{
    std::cout << vec->row( 0 )[i] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

哪个恕我直言似乎很吵,因为我不应该明确指向row(0),因为这是一个RowVector.

是不是有更干净,更快或更优雅的方式?

c++ iterator vector eigen

5
推荐指数
1
解决办法
6416
查看次数

JavaScript正则表达式获取字符串后的数字

在令人震惊地意识到 JavaScript 中的正则表达式与 PCE 中的正则表达式有些不同之后,我坚持以下观点。

在 php 中,我在 x之后提取一个数字

(?x)[0-9]+
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中,相同的正则表达式不起作用,因为捕获括号差异导致无效组。

所以我试图实现同样的微不足道的功能,但我不断得到x 和数字:

(?:x)([0-9]+)
Run Code Online (Sandbox Code Playgroud)

如何捕获x后面的数字而不包含 x?

javascript regex

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

在推回对象并退出函数后,C++向量推回崩溃

问题是来自另一个访问向量并删除迭代器的类的愚蠢错误.与下面的代码无关.抱歉浪费你的时间.

我必须错过一些基本的东西.我有一个函数创建一个对象,操纵它的数据然后将其推送到一个向量中.函数退出的那一刻,程序崩溃了一个SIGSEV,我就盯着(Kdevelop gcc 4.5 gdb):

   /**
   *  The dtor only erases the elements, and note that if the
   *  elements themselves are pointers, the pointed-to memory is
   *  not touched in any way.  Managing the pointer is the user's
   *  responsibility.
   */
  ~vector()
  { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
          _M_get_Tp_allocator()); }
Run Code Online (Sandbox Code Playgroud)

我不存储指针,我正在尝试存储实例化的对象.

void Init::initIndividual(int ID, int gen)
{
  Individual temp_person = Individual(ID,gen);
  int inst_size = getRandom<int>(1,max_inst_size);
  for (int k=0;k<inst_size;k++)
  {
    retry:
    // (1) randomly choose a body part
    int body_num = getRandom<int>(1,20);
    body_part …
Run Code Online (Sandbox Code Playgroud)

c++ destructor vector object push-back

4
推荐指数
1
解决办法
2266
查看次数

Gnuplot 从 python 发送换行符和“,\”

通常在使用交互式 gnuplot 时,我会这样做:

gnuplot> plot "state_log_6548032.data" using 4 with lines lt -1 lw 0.5 title "X axis" ,\
>"state_log_6548032.data" using 5 with lines lt 1 lw 0.5 title "Y axis" ,\
>"state_log_6548032.data" using 6 with lines lt 2 lw 0.5 title "Z axis"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用子进程从 python 执行相同操作时:

gnuplot.write( "plot \"%s\" using 1 with lines lt -1 lw 0.5 title 'X axis' ,\ \n" %filename )
gnuplot.write( "plot \"%s\" using 2 with lines lt 1 lw 0.5 title 'Y axis' ,\ \n" …
Run Code Online (Sandbox Code Playgroud)

python gnuplot

4
推荐指数
1
解决办法
8925
查看次数

链接错误:对icu_50 :: UnicodeString :: UnicodeString()的未定义引用

我正在尝试编译我已经声明为类成员的项目:

icu::UnicodeString label;
icu::UnicodeString tags;
icu::UnicodeString domain;
icu::UnicodeString data;
Run Code Online (Sandbox Code Playgroud)

包括之后(是的,它被发现)

#include <unicode/unistr.h>
Run Code Online (Sandbox Code Playgroud)

在我的CMakeLists.txt中,它搜索,查找和链接:icuuc icudata(libicuuc,libicudata),如输出在抛出错误之前所建议的:

-o icarus -rdynamic -lPocoNet -lPocoUtil -lPocoXML -licuuc -licudata

我已经从源icu4c 50.1.2构建和安装,并在/ usr/local/*下安装了cmake正确查找库,因为我的错误来自链接阶段:

未定义的引用icu_50::UnicodeString::UnicodeString()' undefined reference toicu_50 :: UnicodeString :: ~UnicodeString()'

我在Debian Wheezy上使用gcc-4.7.2并启用-std = c ++ 0x.完全相同的代码昨晚用Debian Squeeze上的gcc-4.3.2和相同的标志进行编译!

我不能为我的生活,弄清楚我做错了什么!请帮忙!

linker-errors unicode-string icu static-linking gcc4.7

4
推荐指数
1
解决办法
3303
查看次数

cmake忽略静态库链接请求

我已经搜索了几个小时如何解决这个问题,我尝试的一切都没有用.我试图静态链接某些库,(libPoco,libmysqlcpp,libmysqlclient,libssl).

我正在使用cmake,虽然我正在定义静态库,但cmake只是查找动态库.我知道我的文件系统中有静态存档中所有必需的库,我知道它们在哪里.

set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
              /lib
              /usr/lib
              /usr/lib64
              /usr/local/lib
              /usr/local/lib64
              /usr/lib/x86_64-linux-gnu)

find_library(POCO_NET NAMES libPocoNet.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library(POCO_UTIL NAMES libPocoUtil.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library(POCO_XML NAMES libPocoXML.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (MYSQL_CLIENT NAMES libmysqlclient.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (MYSQL_CPP NAMES libmysqlpp.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)
find_library (LIBSSL NAMES libssl.a PATHS CMAKE_LIBRARY_PATH STATIC IMPORTED)

if (POCO_NET AND POCO_UTIL AND POCO_XML AND MYSQL_CLIENT AND MYSQL_CPP AND LIBSSL)
  message(STATUS ${POCO_NET})
  message(STATUS ${POCO_UTIL})
  message(STATUS ${POCO_XML})
  message(STATUS ${MYSQL_CLIENT})
  message(STATUS ${MYSQL_CPP})
  message(STATUS ${LIBSSL})
  target_link_libraries(icarus …
Run Code Online (Sandbox Code Playgroud)

cmake static-libraries static-linking

4
推荐指数
1
解决办法
8199
查看次数