小编Mih*_*yan的帖子

TCHAR和WCHAR有什么区别?

我打开了winnt.h头文件,发现有两行:

typedef wchar_t WCHAR;
Run Code Online (Sandbox Code Playgroud)

typedef WCHAR TCHAR, *PTCHAR;
Run Code Online (Sandbox Code Playgroud)

但我的一篇帖子中有评论说它们之间存在一些差异.那有什么区别?

c++ winapi

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

为什么允许通过基类的指针调用派生类的私有虚方法?

# include <iostream>
using namespace std;

class A
{
    public:
    virtual void f()
    {
        cout << "A::f()" << endl;
    }
};
class B:public A
{
    private:
    virtual void f()
    {
        cout << "B::f()" << endl;
    }
};
int main()
{
    A *ptr = new B;
    ptr->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码正常工作并打印B :: f().我知道它是如何工作的,但为什么允许这个代码呢?

c++ virtual inheritance access-specifier

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

为什么子进程在unix中返回退出状态= 32512?

在我的程序中,我正在执行给定的命令并获得结果(日志和退出状态).此外,我的程序必须支持特定于shell的命令(即包含shell特定字符〜(tild),|(管道),*)的命令.但是当我尝试sh -c ls | wc通过我的程序在我的主目录中运行它失败并且它的退出状态是32512时,也"sh: ls | wc: command not found"打印了stderr流.

但有趣的是,sh -c ls | wc如果我在shell中运行它,该命令的工作正常.

问题是什么?或者更优选的是如何通过我的程序运行shell特定命令(即哪个命令应该运行哪些参数)?

下面的代码部分是在fork()之后的子部分.它执行命令.

tokenized_commandstd::vector<std::string>在我的情况下"sh", "-c", "ls", "|", "wc"存储,也是我试图存储在那里"sh", "-c", "\"ls | wc\"",但结果是一样的.commandchar *完整的命令行的存储位置.

        boost::shared_array<const char *> bargv(new const char *[tokenized_command.size() + 1]);
        const char **argv = bargv.get();
        for(int i = 0; i < tokenized_command.size(); ++i)
        {
            argv[i] = tokenized_command[i].c_str();
            printf("argv[%d]: %s\n", i, argv[i]); //trace
        }
        argv[tokenized_command.size()] = NULL; …
Run Code Online (Sandbox Code Playgroud)

c c++ unix shell posix

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

如何从R或/和Matlab运行shell脚本?

让我们假设我们有X可以在shell中执行的命令,并在stdout和stderr中返回一些结果.是否可以从R或/和Matlab执行此操作?如果是的话,如何处理命令的结果?

shell matlab r

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

decltype的行为

假设我有一些stl容器类的对象obj.我可以这样定义同类型的其他对象:

decltype(obj) obj2;
Run Code Online (Sandbox Code Playgroud)

但我无法以这种方式为容器声明迭代器:

decltype(obj)::iterator it = obj.begin();
Run Code Online (Sandbox Code Playgroud)

为什么?难道我做错了什么?

c++ visual-studio-2010 decltype visual-c++ c++11

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

临时对象存放在哪里?

IMO临时对象存储在动态(堆)内存中,但我不确定.你能否确认或否认我的想法?

c++ temporary-objects

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

是否可以同时重置和复制shared_ptr的线程安全?

Boost文档描述了共享指针在同时从多个线程访问它时的行为.特别是他们举了一些例子:

shared_ptr<int> p(new int(42));

//--- Example 1 ---

// thread A
shared_ptr<int> p2(p); // reads p

// thread B
shared_ptr<int> p3(p); // OK, multiple reads are safe

//--- Example 2 ---

// thread A
p.reset(new int(1912)); // writes p

// thread B
p2.reset(); // OK, writes p2

//--- Example 3 ---

// thread A
p = p3; // reads p3, writes p

// thread B
p3.reset(); // writes p3; undefined, simultaneous read/write
...
Run Code Online (Sandbox Code Playgroud)

但他们没有说(或者我看不到)如果同时shared_ptr写入和读取同一个对象会发生什么.说:

shared_ptr<int> p(new int(42)); …
Run Code Online (Sandbox Code Playgroud)

c++ thread-safety shared-ptr

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

是否有适用于C或C++的跨平台gzip处理器库?

我想要一些库(API)来打开,搜索,读取,写入......(用一个词来处理)gzip文件.C/C++有没有开源跨平台的?

c c++ open-source gzip

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

获取当前线程时间的ID的操作是否昂贵?

我将在我的代码中使用当前正在运行的线程的id在一个性能非常关键的位置,所以我应该选择是在某处缓存该id还是调用一个方法(gettid对于类似unix的系统和GetCurrentThreadIdwindows)来获取它时间.哪个更好?获取线程ID系统调用?

c c++ multithreading

9
推荐指数
2
解决办法
1391
查看次数

如何调用模板类的静态成员?

如果我有:

template <class T>
class A
{
 static void f()
 {
  // not using template parameter T
 }
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下A<int>::f()是相同的A<double>::f(),但我不希望A::f()通过模板参数调用.是否有允许调用f()但不需要模板参数的语法?

c++ templates static-methods

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