我正在尝试用C++构造一个字符串,如下所示.
const char *cstring = "abcd";
const string cppstr = string(cstring, cstring + strlen(cstring));
Run Code Online (Sandbox Code Playgroud)
这工作正常,cppstr的值为"abcd",即使它与标准中指定的任何字符串构造函数都不匹配.任何人都可以告诉我在这种特殊情况下调用哪个字符串构造函数.
我有一个 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返回)?
我正在尝试编译一个包含 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”。任何人都可以让我知道如何解决这个问题吗?
我试图了解重载新运算符.我编写了如下代码.
#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) 我试图使用UDP套接字.在客户端我设置了特定的超时时间,当我调用recv()时,我正在检查返回值,如果它小于0,我正在检查errno是EAGAIN还是EWOULDBLOCK.如果errno不是这两个中的一个,我试图重新连接服务器.现在我需要确定连接的另一端是否关闭.除了检查recv()的返回值等于'0'之外,我还需要检查errno吗?如果套接字的另一端关闭,recv()是否设置了errno?如果不是为什么没有设置errno?
我试图在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) 我以为我不能将一个常量分配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。请问有人可以帮助我了解我的能力吗?
我正在阅读有关尾随返回类型的信息。我遇到了这个网站https://blog.petrzemek.net/2017/01/17/pros-and-cons-of-alternative-function-syntax-in-cpp/它解释了这些返回类型的需要和它提到如下。
Run Code Online (Sandbox Code Playgroud)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; }...由于编译器从左到右解析源代码,它在定义之前看到 lhs 和 rhs,并拒绝代码。通过使用尾随返回类型,我们可以绕过这个限制。
但是根据我的理解,当编译器到达 decltype(lhs + rhs) 时,它应该已经知道 lhs 和 rhs 的类型。任何人都可以让我知道为什么编译器无法推断出函数的返回类型,以及是否还有其他用途我们必须使用模板以外的尾随返回类型。
我试图了解存储哪个段常量数据.
例如
const int x = 100
Run Code Online (Sandbox Code Playgroud)
1)哪里存储了x?在代码段或数据段?
2)初始化数据段中是否存在"只读"数据段?
即使视频缓冲区有足够的数据,如果视频暂停,我们也需要在视频窗口上显示播放按钮(这将发生在 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) c++ ×6
c ×2
linux ×2
c++11 ×1
const ×1
exit-code ×1
html ×1
html5-video ×1
python ×1
sockets ×1
string ×1
subprocess ×1
unique-ptr ×1
vue.js ×1