我需要从标准输入读取密码,并且不想std::cin回显用户输入的字符...
如何禁用std :: cin的回声?
这是我目前使用的代码:
string passwd;
cout << "Enter the password: ";
getline( cin, passwd );
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种与操作系统无关的方法来做到这一点. 这里有一些方法可以在Windows和*nix中执行此操作.
定义一个为类获取两个引用的全局运算符和定义只接受右操作数的成员运算符之间有区别吗?
全球:
class X
{
public:
int value;
};
bool operator==(X& left, X& right)
{
return left.value == right.value;
};
Run Code Online (Sandbox Code Playgroud)
会员:
class X
{
int value;
bool operator==( X& right)
{
return value == right.value;
};
}
Run Code Online (Sandbox Code Playgroud) 我无法理解为什么,在Ruby中, Array#slice并且Array#slice!行为Array#sort与Array#sort!(和一种方式在新数组上返回结果而另一种在当前对象上工作的方式)不同.
使用sort第一个(没有爆炸),返回当前数组的排序副本,并对当前数组进行sort!排序.
slice,返回具有指定范围的Array,并从当前对象中slice! 删除指定的范围.
这样做的原因是什么,Array#slice!而不是使当前对象成为具有指定范围的数组?
例:
a = [0,1,2,3,4,5,6,7,8,9]
b = a.slice( 2,2 )
puts "slice:"
puts " a = " + a.inspect
puts " b = " + b.inspect
b = a.slice!(2,2)
puts "slice!:"
puts " a = " + a.inspect
puts " b = " + b.inspect
Run Code Online (Sandbox Code Playgroud)
输出:
slice:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] …Run Code Online (Sandbox Code Playgroud) 我有一个UDP套接字侦听端口进行广播传输,它工作正常.
然而,当我休眠和恢复的操作系统(Windows 7),插座只是停止receving数据(我可以看到,有数据使用Wireshark的到达).
如果我更改任何网络设置,例如,更改我的IP地址,禁用和启用网络适配器,也会发生这种情况.
操作系统似乎在休眠时禁用所有网络适配器,并在恢复时重新启用它们.
select只返回0(超时),这与我没有收到任何数据时没有什么不同.我无法在任何地方找到任何对此行为的引用.
如果我关闭套接字并重新创建它,它将再次开始工作.
恢复操作系统后,我的TCP侦听套接字仍然正常工作.
关于如何检测和纠正这种情况的任何想法?
编辑:它仍然直接接收地址数据就好了,它只是不再接收brodcast传输.
EDIT2:刚刚发现如果我写入套接字(向任何地方发送一个虚拟数据包)它再次开始工作......
有没有办法使用我在OpenSSL中使用Crypto ++ API生成的RSA密钥?我正在寻找一种方法来存储密钥的格式,Crypto ++和OpenSSL都可以轻松打开它们.
我正在编写许可方案,并希望使用Crypto ++ API验证签名和解密文件,但是要生成许可证文件,我想使用Web界面(可能使用PHP,它只支持OpenSSL)来生成和加密/签署许可证.
我会使用Crypto ++编写这两个应用程序并从PHP调用它,但由于私钥将以加密形式存储,因此必须将密码传递给应用程序并在命令行上传递它似乎不太好我的想法.
有没有办法使用STL包含不可复制的元素?
这样的事情:
class noncopyable
{
noncopyable(noncopyable&);
const noncopyable& operator=(noncopyable&);
public:
noncopyable(){};
};
int main()
{
list<noncopyable> MyList; //error C2248: 'noncopyable::noncopyable' : cannot access private member declared in class 'noncopyable'
}
Run Code Online (Sandbox Code Playgroud) 我正在使用pthread_cond_timedwait一个线程循环来执行每X ms(除非它首先被唤醒).
当我使用gdb进行调试时,它的功能永远不会返回.
这个论坛帖子也有同样的问题,但没有解决方案.
以下是一些可以重现问题的代码:
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
static pthread_cond_t s_cond = PTHREAD_COND_INITIALIZER;
static pthread_mutex_t s_mutex = PTHREAD_MUTEX_INITIALIZER;
int main(int argc, char **argv)
{
int rc = 0;
struct timespec curts = { 0 }; /* transformed timeout value */
clock_gettime(CLOCK_REALTIME, &curts);
curts.tv_sec += 10; /* Add 10 seconds to current time*/
pthread_mutex_lock(&s_mutex);
printf("pthread_cond_timedwait\n");
rc = pthread_cond_timedwait(&s_cond, &s_mutex, &curts);
if (rc == ETIMEDOUT)
{
printf("Timer expired \n");
}
pthread_mutex_unlock(&s_mutex);
return 1;
} …Run Code Online (Sandbox Code Playgroud) 我需要在构造派生对象之后立即为从给定基类派生的所有类调用虚方法.但是在基类构造函数中执行此操作将导致纯虚方法调用
这是一个简化的例子:
struct Loader {
int get(int index) { return 0; }
};
struct Base{
Base() {
Loader l;
load( l ); // <-- pure virtual call!
}
virtual void load( Loader & ) = 0;
};
struct Derived: public Base {
int value;
void load( Loader &l ) {
value = Loader.get(0);
}
};
Run Code Online (Sandbox Code Playgroud)
我可以load在Derived构造函数中调用,但Derived不知道如何创建一个Loader.任何想法/解决方法?
我需要在地图中存储各种字符串,但我想按尺寸按顺序排列.
使用这样的谓词:
struct strsize_less {
bool operator()(const string& l, const string& r) {
return l.size() < r.size();
};
};
Run Code Online (Sandbox Code Playgroud)
会完成排序,但它会丢弃相同大小的字符串
int main() {
typedef map<string, int, strsize_less> mymap_t;
mymap_t mymap;
mymap["j" ] = 0;
mymap["i" ] = 1;
mymap["hh" ] = 2;
mymap["gg" ] = 3;
mymap["fff" ] = 4;
mymap["eee" ] = 5;
mymap["dddd" ] = 6;
mymap["cccc" ] = 7;
mymap["bbbbb"] = 8;
mymap["aaaaa"] = 9;
for( mymap_t::iterator i = mymap.begin(); i!=mymap.end(); ++i )
cout << "k = …Run Code Online (Sandbox Code Playgroud) c++ ×6
stl ×3
behavior ×1
containers ×1
crypto++ ×1
encryption ×1
gdb ×1
inheritance ×1
map ×1
noncopyable ×1
onresume ×1
openssl ×1
predicate ×1
pthreads ×1
rsa ×1
ruby ×1
sockets ×1
udp ×1
windows ×1
windows-7 ×1