小编Qix*_*Qix的帖子

PHP:获取参数计数

令人惊讶的是,看到PHP没有明显的功能来完成我正在寻找的东西,所以我会问这里.

你将如何获得特定函数在函数之外的参数数量(就像func_num_args仅从函数外部获取).

解决方案实际上不能执行该功能(这会破坏目的),我想(最好)没有任何反射类.

可能?

php arguments function count

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

EXE也导出静态lib导出

我创建了一个静态库和一个EXE文件(使用静态库),但是当我在IDA pro中打开EXE时,导出也列在EXE中.

我知道它们应该在.lib本身中导出,但为什么它们也会在EXE中显示为导出呢?

编辑:这是导出/导入(它们在单独的头文件中)

这是出口:

#define NC_LIBEXPORT(a) extern "C" __declspec(dllexport) a __cdecl
NC_LIBEXPORT(VOID) rol8(unsigned char* a, unsigned char b);
Run Code Online (Sandbox Code Playgroud)

和进口:

extern "C" VOID rol8(unsigned char* a, unsigned char b);
Run Code Online (Sandbox Code Playgroud)

c++ pe-exports

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

sizeof()是递归的吗?

答案应该很简单,但我想确定一下.

sizeof()递归的吗?例如,

struct foo
{
   DWORD a;
   DWORD b;
};

struct bar
{
   DWORD c;
   foo d;
};
Run Code Online (Sandbox Code Playgroud)

sizeof(bar)包括大小foo,返回一个完整的12个字节(假设DWORD是4个字节)?

c++ struct sizeof

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

使用常量长度时char []和new char []之间的差异

所以这似乎是一个广泛回答的问题,但我更感兴趣的是两者之间究竟发生了什么不同的内部结构.

除了第二个示例不仅创建内存,而且还创建指向内存的指针的事实,当发生以下情况时,内存中会发生什么:

char a[5];
char b* = new char[5];
Run Code Online (Sandbox Code Playgroud)

与我提出这个问题的原因更直接相关,我该怎么做

const int len = 5;
char* c = new char[len];
Run Code Online (Sandbox Code Playgroud)

但不是

const int len = 5;
char d[len]; // Compiler error
Run Code Online (Sandbox Code Playgroud)

编辑应该提到我在VC++上遇到这个编译错误(去图......)

1>.\input.cpp(138) : error C2057: expected constant expression
1>.\input.cpp(138) : error C2466: cannot allocate an array of constant size 0
1>.\input.cpp(138) : error C2133: 'd' : unknown size
Run Code Online (Sandbox Code Playgroud)

编辑2:应该发布我正在使用的确切代码.当使用运行时值计算动态分配的数组的常量长度时,会产生此错误.

假设random(a,b)返回int介于a和之间b,

const int len1 = …
Run Code Online (Sandbox Code Playgroud)

c++ memory arrays initialization dynamic-allocation

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

编译器是否将简单的getter方法优化为简单的字段访问?

虽然我认为在VC++中这不是一件容易的事情,但仍然值得一提.

当为返回受保护/私有成员的值的类创建getter方法时,编译器是否优化了此调用,因此它等同于引用该成员而不必使该类成为朋友并且没有完整方法调用的开销?

c++ methods getter compiler-optimization visual-c++

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

将文本区域保存到文件

可以将textarea保存到文件中吗?

FileWriter fw = new FileWriter(file1.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(txtArea1);
Run Code Online (Sandbox Code Playgroud)

我明白了:

txtArea1无法解析为变量.

我究竟做错了什么?

java file-io textarea save

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

结构矢量:添加元素C++

我正在从文件中读取我的结构,我想将它们添加到结构的向量中.以下是它的外观和工作原理:

    typedef struct
{
    int ID;
    string name;
    string surname;
    int points;
}
Student;

int main()
{
    ifstream theFile("test.txt");
    std::vector<Student*> students;

    Student* s = new Student();

    while(theFile >> s->ID >> s->name >> s->surname >> s->points)
    {
        studenti.push_back(s); // here I would like to add this struct s from a file
    }

// here I want to print each struct's values on the screen, but the output is always ONLY last struct N times, and not all of them, each only …
Run Code Online (Sandbox Code Playgroud)

c++ struct vector

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

对深度嵌套的元组进行排序

我有一个嵌套元组列表,如下所示:

l = [('apple', ['gala','fuji', 'macintosh']),
('pear', ['seckel','anjou','bosc'])]
Run Code Online (Sandbox Code Playgroud)

我喜欢按字母顺序排序元组的第二项,以便它看起来像:

l2 = [('apple', ['fuji','gala', 'macintosh']),
('pear', ['anjou','bosc','seckel'])]
Run Code Online (Sandbox Code Playgroud)

我知道我可以申请sorted(l)它,但我对Python很新,我遇到迭代问题.我怎样才能做到这一点?

python iteration tuples python-3.x

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

使用预定义的字符串和参数从宏构建的函数名称

我目前在C++中定义宏时遇到问题.

我希望这样:

#define MY_MACRO (Name, Address) __int32 Get_Name() { return Address; }
Run Code Online (Sandbox Code Playgroud)

现在,当我这样称呼时:

MY_MACRO(Test, 0x10);
Run Code Online (Sandbox Code Playgroud)

吐出来的

__int32 Get_Name() { return 0x10; }
            ^^^^
Run Code Online (Sandbox Code Playgroud)

代替

__int32 Get_Test() { return 0x10; }
            ^^^^
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我真的需要Get_名字中的名字,然后是参数传递的名字.

c++ macros

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

创建随机二进制字符串:如何在插入另一个字符串之前从to_string()中删除空字符'\ 0'

我正在尝试创建一个由0和1组成的随机二进制字符串.在我的实现中,我生成随机整数0和1,然后我使用std :: to_string()以将它们转换为字符串并将它们插入另一个字符串.我遇到的问题是,似乎通过使用std :: to_string()来插入'0'或'1'字符,我还插入了终止空字符'\n',因此我加倍了串.例如,假设我要创建一个由Nbits = 10个字符组成的字符串.通过下面的实现,我得到一个10元素字符串,如屏幕上打印,但字符串的大小是其两倍.你知道我怎么能避免这个吗?

大小的问题在于我正在尝试编写遗传算法的二进制表示,并且我需要大小是交叉/变异操作符正确的大小.

#include <iostream>
#include <string>
#include <random>

using namespace std;

std::random_device rd;    
std::mt19937 gen(rd());

// Random bit string generator 
string random_string(size_t Nbits){
    std::uniform_int_distribution<> int1(0,1);
    string s;
    s.resize(Nbits);
    for(size_t i=0; i<Nbits; i++)
            s.insert(i,to_string(int1(gen)));

    return s;
};

int main(){
    // Say I want a 10 bits random binary string 
    size_t Nbits=10;
    string s=random_string(Nbits);

    // If I print my string on screen, it has the correct number of entries: 
    cout<<s<<endl;
    // However the size of the …
Run Code Online (Sandbox Code Playgroud)

c++ string genetic-algorithm

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