小编Mih*_*yan的帖子

如何使用POSIX select()

Shoud我在使用它们之前使文件描述符无阻塞select()

c c++ posix posix-select

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

typedefing枚举问题.和visual studio 2005中的bug

struct A
{
    enum E
    {
        FIRST,
        SECOND
    };
};

struct B
{
    typedef A::E E;
};

int main()
{
    B::E e0 = A::FIRST;//OK (this case is clear for me)
    B::E e1 = A::E::FIRST;//OK (this case is clear for me as well)
    B::E e2 = B::FIRST;//Compile Error: FIRST is not member of B (Why isn't this allowed? Don't we lose meaning of typedef of enums in this case?)
    B::E e3 = B::E::FIRST;//Error of compiler (If there were no bug in …
Run Code Online (Sandbox Code Playgroud)

c++ enums visual-studio-2005 visual-studio

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

通过memcpy移动缓冲区

我编写了以下2个ltrim函数(从字符串左侧删除空格的函数):

1.(把这段代码放在这里不能得到这样的代码作为答案)

void ltrim(char * str, int size)
{
    char const *start = str;
    char const *end = start + size;
    for(;*start && (*start==' ' || *start=='\n' || *start=='\r' || *start=='\t');++start);

    while(start != end)
    {
        *str = *start;
        ++start;
        ++str;
    }
    *str='\0';
}
Run Code Online (Sandbox Code Playgroud)

2.

void ltrim(char * str, int size)
{
    char const *start = str;
    char const *end = start + size;
    for(;*start && (*start==' ' || *start=='\n' || *start=='\r' || *start=='\t');++start);
    memcpy(str, start, end-start);
    *(str + …
Run Code Online (Sandbox Code Playgroud)

c

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

如何使用c ++在Windows中锁定文件?

如何将Windows中的文件锁定为只有当前线程(来自同一进程的其他线程,没有其他进程)才能访问(读/写)该文件?

如果有可能请告诉我一些类似fcntl的解决方案(锁定具有其描述符的文件的解决方案).但无论如何,其他解决方案也是受欢迎的.

c++ file file-locking

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

如何初始化结构指针数组?

我有一系列指向结构的指针.我可以将所有它们初始化为NULL,如下所示?

struct hash
{
    int bid;
    struct hash *prev,*next,*fl,*fr;
};

struct hash *h[4]={NULL,NULL,NULL,NULL};
Run Code Online (Sandbox Code Playgroud)

c

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

是否可以为模板类的成员函数编写专门化?

template <class T, bool flag>
class A
{
    //...
    void f()
    {
        std::cout << "false" << std::endl;
    }
    //...
};

template<class T>
void A<T, true>::f<T, true>()
{
    std::cout << "true" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是错误的,不编译,但你知道我将要做什么.那我该怎么做呢?

c++ templates

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

如何显式解析 perl 字符串中的变量?

在我的 perl 脚本中,我想要两个版本的$config目录:

my $config='$home/client/config';
Run Code Online (Sandbox Code Playgroud)

my $config_resolved="$home/client/config";
Run Code Online (Sandbox Code Playgroud)

但我想$config_resolved$config,即这样的东西:

my $config_resolved=resolve_vars($config);
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 perl 中做这样的事情?

string perl

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

如何在不继承句柄的情况下分叉进程?

在我在Mac上运行的C/C++服务器应用程序(Darwin内核版本10.4.0)中,我正在分析子进程,并希望这些childes不会继承服务器的文件句柄(文件,套接字,管道......).似乎默认情况下所有句柄都被继承,netstat显示子进程正在侦听服务器的端口.我该怎么做这种叉子?

c c++ posix fork

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

Windows中的管道分支和execvp类似物

这是在unix中使用的pipe fork exec三重奏的简单演示.

#include <stdio.h>
#include <sys/fcntl.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
    int outfd[2];
    if(pipe(outfd)!=0)
    {
          exit(1);
    }
    pid_t pid = fork();
    if(pid == 0)
    {
        //child
        close(outfd[0]);
        dup2(outfd[1], fileno(stdout));
        char *argv[]={"ls",NULL};
        execvp(argv[0], (char *const *)argv);
        throw;
    }
    if(pid < 0)
    {
        exit(1);
    }
    else
    {
        //parrent
        close(outfd[1]);
        dup2(outfd[0], fileno(stdin));
        FILE *fin = fdopen(outfd[0], "rt");
        char *buffer[2500];
        while(fgets(buffer, 2500, fin)!=0)
        {
            //do something with buffer
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我想在Windows中使用WinAPI编写相同的内容.我应该使用哪些功能?有任何想法吗?

c c++ winapi

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

使用CRTP时,在基类中使用非模板派生类的typedef

我正在使用CRT模式,并希望基类typedef从派生类中看到s.在这篇文章中 @James McNellis建议使用base_traits类来做到这一点并且它工作正常.但是在该帖子中描述的情况下,派生类本身就是一个模板.当派生类不是模板时,此方法在VS2010中不起作用.

template <class D>
struct base_traits;
template <class D>
struct base
{
    typedef typename base_traits<D>::value_t value_t;
};

struct derived : base<derived>
{
    typedef typename base_traits<derived>::value_t value_t;
};

template<>
struct base_traits<derived>
{
    typedef int value_t;
};
Run Code Online (Sandbox Code Playgroud)

上面的代码提供了很多错误.第一个是:

错误C2027:使用未定义类型'base_traits

base类的typedef 的行上.

c++ templates crtp

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