小编kad*_*ina的帖子

这里调用了哪个std :: string构造函数?

我正在尝试用C++构造一个字符串,如下所示.

const char *cstring = "abcd";
const string cppstr = string(cstring, cstring + strlen(cstring));
Run Code Online (Sandbox Code Playgroud)

这工作正常,cppstr的值为"abcd",即使它与标准中指定的任何字符串构造函数都不匹配.任何人都可以告诉我在这种特殊情况下调用哪个字符串构造函数.

c++ string

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

如何从Python中的另一个程序捕获一个程序中的sys.exit值

我有一个 python 文件 a.py。我正在使用从文件返回sys.exit(some_val)

现在,我又多了一个文件 b.py,我从中执行 a.py,如下所示:

proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True)
output, error = proc.communicate()
Run Code Online (Sandbox Code Playgroud)

sys.exit()您能否告诉我是否有任何方法可以从 b.py 获取值(使用 a.py返回)?

python subprocess exit-code

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

为什么g++编译器找不到unique_ptr?

我正在尝试编译一个包含 unique_ptr 的小 C++ 代码,如下所示。

#include <iostream>
#include <memory>

using namespace std;

int main()
{
    unique_ptr<int> p1(new int);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 g++ 编译代码时,它抛出“unique_ptr”未在此范围内声明。我试图在 Linux 机器上编译。即使我尝试使用 '-std=c++11' 选项。它说的是“无法识别的命令行选项 -std=c++11”。任何人都可以让我知道如何解决这个问题吗?

c++ unique-ptr

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

为什么重载的new运算符正在调用构造函数,即使我在重载函数中使用malloc?

我试图了解重载新运算符.我编写了如下代码.

#include <iostream>
#include <cstdlib>
#include <new>

using namespace std;

class loc
{
    int lo, la;

    public:
        loc()
        {
        }

        loc(int x, int y)
        {
            cout << "In constructor\n";
            lo = x;
            la = y;
        }

        void show()
        {
            cout << lo << " ";
            cout << la << endl;
        }

        void *operator new(size_t sz);
        void operator delete(void *p);
};

void *loc::operator new(size_t sz)
{
    cout << "in Overloaded new\n";
    void *p = malloc(sz);

    return p;
}

void loc::operator delete(void …
Run Code Online (Sandbox Code Playgroud)

c++

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

如果套接字通信的另一端被关闭,为什么recv()不设置errno?

我试图使用UDP套接字.在客户端我设置了特定的超时时间,当我调用recv()时,我正在检查返回值,如果它小于0,我正在检查errno是EAGAIN还是EWOULDBLOCK.如果errno不是这两个中的一个,我试图重新连接服务器.现在我需要确定连接的另一端是否关闭.除了检查recv()的返回值等于'0'之外,我还需要检查errno吗?如果套接字的另一端关闭,recv()是否设置了errno?如果不是为什么没有设置errno?

c sockets linux

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

在C++中创建观察者设计模式的好方法

我试图在C++中实现观察者设计模式,如下所示

#include <iostream>
#include <vector>

using namespace std;

class observer
{
    public:
        observer() = default;
        ~observer() = default;

        virtual void notify() = 0;
};

class subject
{
    vector <observer *> vec;

    public:
        subject() = default;
        ~subject() = default;

        void _register(observer *obj)
        {
            vec.push_back(obj);
        }

        void unregister(observer *obj)
        {
            int i;
            for(i = 0; i < vec.size(); i++)
            {
                if(vec[i] == obj)
                {
                    cout << "found elem. unregistering" << endl;
                    vec.erase(vec.begin() + i);
                    break;
                }
            }

            if(i == vec.size())
            {
                cout …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns observer-pattern

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

为什么我可以在C ++中将常量shared_ptr分配给非常量shared_ptr?

我以为我不能将一个常量分配shared_ptr给一个非常量shared_ptr。但令人惊讶的是,我能够按以下方式进行分配,并且工作正常。

#include <iostream>
#include <memory>

using namespace std;

int main()
{
    const std::shared_ptr<const string> a = std::make_shared<const string>("Hello world");

    std::shared_ptr<const string> b = a;
    cout << "a count " << a.use_count() << ", b count " << b.use_count() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

.use_count() 显示为2。请问有人可以帮助我了解我的能力吗?

c++ const

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

在 C++ 中实际需要尾随返回类型的地方?

我正在阅读有关尾随返回类型的信息。我遇到了这个网站https://blog.petrzemek.net/2017/01/17/pros-and-cons-of-alternative-function-syntax-in-cpp/它解释了这些返回类型的需要和它提到如下。

template<typename Lhs, typename Rhs>
decltype(lhs + rhs) add(const Lhs& lhs, const Rhs& rhs) {
    // error: ^^^ 'lhs' and 'rhs' were not declared in this scope
    return lhs + rhs;
}
Run Code Online (Sandbox Code Playgroud)

...由于编译器从左到右解析源代码,它在定义之前看到 lhs 和 rhs,并拒绝代码。通过使用尾随返回类型,我们可以绕过这个限制。

但是根据我的理解,当编译器到达 decltype(lhs + rhs) 时,它应该已经知道 lhs 和 rhs 的类型。任何人都可以让我知道为什么编译器无法推断出函数的返回类型,以及是否还有其他用途我们必须使用模板以外的尾随返回类型。

c++ c++11

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

哪些段常量数据存储?

我试图了解存储哪个段常量数据.

例如

const int x = 100
Run Code Online (Sandbox Code Playgroud)

1)哪里存储了x?在代码段或数据段?

2)初始化数据段中是否存在"只读"数据段?

c linux

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

如何将 vue.js 中视频元素的 paused 属性绑定到可以显示/隐藏播放按钮的函数

即使视频缓冲区有足够的数据,如果视频暂停,我们也需要在视频窗口上显示播放按钮(这将发生在 safari 浏览器中,因为 Safari 不允许在没有用户干预的情况下播放视频)。我为暂停事件添加了事件侦听器。代码如下(请注意这是 .vue 文件)

<template>
    <div id="app" @keydown="handleKey($event)">
        <video ref="videoRef" src="" id="videoID" width="100%" v-on:pause="onVideoPause"></video>
        <div id="videoCC"></div>
        <button type="button" id="playVideo" v-on:click="onClickCallback"><img :src="require('@/assets/playVideo.png')"></button>
        <router-view tabindex="1"></router-view>
    </div>
</template>

export default {
    name: 'app',
methods: {
    onClickCallback: function () {
        console.log('onClickPlayback is called')
        let videoPlayer = player.instance()
        videoPlayer.play()
        videoPlayer.setLogLevel(4) // Set Log level to debug

        let playVideoBtn = document.getElementById('playVideo')
        // Video is playing. Hide the play button
        if (playVideoBtn.style.display === 'block') {
            playVideoBtn.style.display = 'none'
        }
    },
    onVideoPause: function () { …
Run Code Online (Sandbox Code Playgroud)

html html5-video vue.js

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