小编sta*_*low的帖子

在C中将4字节char转换为int32

我首先将int32数字转换为char [4]数组,然后通过(int*)将数组转换回int32,但数字与之前的数字不同:

unsigned int num = 2130706432;
unsigned int x;
unsigned char a[4];

a[0] = (num>>24) & 0xFF;
a[1] = (num>>16) & 0xFF;
a[2] = (num>>8) & 0xFF;
a[3] = num & 0xFF;

x = *(int *)a;
printf("%d\n", x);
Run Code Online (Sandbox Code Playgroud)

输出是127.如果我设置num = 127,输出是2130706432.有没有人有想法?

c

15
推荐指数
4
解决办法
4万
查看次数

从赋值运算符函数调用复制构造函数

我有一个指向动态分配数组的类,所以我创建了复制构造函数和赋值运算符函数.由于复制构造函数和赋值运算符函数执行相同的工作,我从赋值运算符函数调用复制构造函数但得到"error C2082: redefinition of formal parameter".我正在使用Visual Studio 2012.

// default constructor
FeatureValue::FeatureValue()
{
    m_value = NULL;
}

// copy constructor 
FeatureValue::FeatureValue(const FeatureValue& other)
{
    m_size = other.m_size;  
    delete[] m_value;
    m_value = new uint8_t[m_size];

    for (int i = 0; i < m_size; i++)
    {
        m_value[i] = other.m_value[i];
    }
}

// assignment operator function
FeatureValue& FeatureValue::operator=(const FeatureValue& other)
{
    FeatureValue(other); // error C2082: redefinition of formal parameter
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio

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

gdb"在启动程序中退出代码126."

我正在调试一个c ++程序:

gdb simplesearch.o
Run Code Online (Sandbox Code Playgroud)

然后gdb成功启动:

(gdb) Reading symbols from /home/zwx/workspace/xapian/examples/simplesearch.o...done.
Run Code Online (Sandbox Code Playgroud)

但是当我试图跑:

(gdb) run
Run Code Online (Sandbox Code Playgroud)

gdb报告:

Starting program: /home/zwx/workspace/xapian/examples/simplesearch.o 
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: cannot execute binary file
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: Success
During startup program exited with code 126.
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?

gdb

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

迭代c ++中的非连续枚举元素

有许多方法可以迭代连续的枚举

enum Animal {Cat, Dog, Dolphin}
Run Code Online (Sandbox Code Playgroud)

但有没有一种方便简单的方法来迭代非连续的枚举元素

enum Animal {Cat = 0, Dog = 5, Dolphin = 8}
Run Code Online (Sandbox Code Playgroud)

c++ enums

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

为什么我不能在GDB中进入C++ cout标准库函数?

我写了一个简单的test.cc如下:

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello world" << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译:

g++ -g test.cc -o test.o
Run Code Online (Sandbox Code Playgroud)

我在线上跑gdb了一个断点"Hello world":

$ gdb test.o
(gdb) b 7
(gdb) c
Run Code Online (Sandbox Code Playgroud)

然后gdb"Hello world"在线上,但是当我跑

(gdb) s
Run Code Online (Sandbox Code Playgroud)

它无法进入该cout功能.所以我的问题是,我该如何进入这个cout功能呢?

c++ gdb

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

列出数字的所有唯一排列的算法包含重复项

问题是:给定一组可能包含重复项的数字,返回所有唯一的排列。

天真的方法是使用一个集合(在 C++ 中)来保存排列。这需要O ( n ! × log( n !)) 时间。有更好的解决方案吗?

algorithm combinations permutation

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

使用shared_ptr返回向量的指针

我正在测试vector的shared_ptr.目的很简单,我想返回一个向量指针并访问其中的值.但它给了例外."在内存位置的.. std:out_of_range处未处理的异常......".我正在使用Visual Studio 2012.

vector<int>* func()
{
    boost::shared_ptr<vector<int> > vec(new vector<int>());

    vec->push_back(123);
    return vec.get();
    }

int _tmain(int argc, _TCHAR* argv[])
{
    vector<int>* result = func();

    cout << result->at(0); // ERROR here
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost visual-c++

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

标签 统计

c++ ×4

gdb ×2

algorithm ×1

boost ×1

c ×1

combinations ×1

enums ×1

permutation ×1

visual-c++ ×1

visual-studio ×1