小编wjl*_*wjl的帖子

id_rsa.pub文件在哪里创建?

我运行以下SSH命令来创建我的rsa密钥,但我不知道文件的创建位置

drlloyd@DIS-7L79KF1 ~/.ssh
$ ssh-keygen -t rsa -C "myemail@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/f/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /f/.ssh/id_rsa.
Your public key has been saved in /f/.ssh/id_rsa.pub.
I removed the rsa fingerprint
Run Code Online (Sandbox Code Playgroud)

id_rsa.pub文件在哪里创建?

ssh ssh-keys

22
推荐指数
3
解决办法
5万
查看次数

为什么要通过rvalue引用和值来获取std :: initializer_list?

std::initializer_list我所看到的大多数C++ 11代码都是按值来获取的,但有时它是由右值引用获取的.这样做有什么好的理由吗?

例如,我遇到的几乎所有例子都是这样的:

class A {
  public:
  A(std::initializer_list<int>);
};
Run Code Online (Sandbox Code Playgroud)

但我偶尔会看到这件事:

class B {
  public:
  B(std::initializer_list<int> &&);
};
Run Code Online (Sandbox Code Playgroud)

我理解一般的rvalue引用的用途和目的,但为什么在a的情况下,其中一个优先于另一个std::initializer_list?我唯一能想到的是class A允许初始化列表单独构建,并class B防止这种情况发生.

std::initializer_list<int> values {1,2,3,4};
A a(values); // valid
B b(values); // error
Run Code Online (Sandbox Code Playgroud)

但我想不出一个很好的理由,为什么要防止这是一件令人满意的事情.

那么,为什么会std::initializer_list采用右值参考而不是值?

c++ initializer-list rvalue-reference c++11

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

如何使用type_traits检测字符串文字?

我如何可靠地对任何不是字符串文字的东西进行static_assert?

例如,在下面的代码中,我试图包装标准的断言宏,但静态拒绝任何不是字符串文字的消息(因为当断言触发时,除了字符串文字之外的任何东西都不会在运行时显示).

#include <cassert>
#include <string>
#include <type_traits>

#define my_assert(test, message)\
    static_assert(\
        (\
            !std::is_pointer<decltype(message)>::value &&\
            !std::is_array<decltype(message)>::value\
        ),\
        "literal string required"\
    );\
    assert((message, (test)));

int main() {
    my_assert(1 == 1, "one equals one");
    my_assert(1 == 2, "one equals two");

    {
        const char *msg = "one equals one";
        //my_assert(1 == 1, msg); // triggers static_assert
    }

    {
        const char msg[] = "one equals one";
        //my_assert(1 == 1, msg); // triggers static_assert
    }

    {
        const std::string msg = "one equals one";
        //my_assert(1 == …
Run Code Online (Sandbox Code Playgroud)

c++ string-literals type-traits c++11

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

从模板基类继承构造函数而不重复模板参数?

如何从模板基类继承构造函数而不重复模板参数(并且不使用宏):

例如,这不起作用(使用GCC 4.8):

template <typename T>
struct base {};

template <typename U>
struct derived : base<U> {
    using base::base;
};
Run Code Online (Sandbox Code Playgroud)

如果我重复基类的模板参数,它确实有效:

template <typename T>
struct base {};

template <typename U>
struct derived : base<U> {
    using base<U>::base;
};
Run Code Online (Sandbox Code Playgroud)

问题是"U"可能是非常复杂的东西,很烦人且容易重复.例如,这是我最初的激励示例之一:

#include <boost/multi_index_container.hpp>
#include <boost/multi_index/key_extractors.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/sequenced_index.hpp>

using namespace boost::multi_index;

struct as_list_tag {};
struct as_set_tag  {};

template <typename T>
struct unique_list : multi_index_container <
    T,
    indexed_by <
        sequenced<tag<as_list_tag>>,
        ordered_unique<tag<as_set_tag>, identity<T>>
    >
> {
    using multi_index_container <
        T,
        indexed_by <
            sequenced<tag<as_list_tag>>, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates constructor c++11

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

哪些开源C或C++库可以将任意UTF-32转换为NFC?

哪些开源C或C++库可以将任意UTF-32转换为NFC

我认为到目前为止可以做到这一点的图书馆:ICU,Qt,GLib(不确定?).

我不需要任何其他复杂的Unicode支持; 只是从任意但已知正确的UTF-32转换为NFC形式的UTF-32 .

我最感兴趣的是一个可以直接执行此操作的库.例如,Qt和ICU(据我所知)都通过与UTF-16之间的中间转换阶段完成所有工作.

c++ unicode open-source utf-32

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

C++用户定义的文字运算符是否可以传递空指针?

C++用户定义的文字运算符是否可以传递空指针?

这实际上发生在g ++的实验版本(gcc版本4.7.0 20111114(实验性)[主干版本181364](Debian 20111114-1))但我不确定这是一个错误(90%肯定)还是一些奇怪的预期行为.

示例程序:

#include <iostream>
#include <stdexcept>
#include <string>

std::string operator "" _example (const char * text) {
  using std::cerr;
  using std::endl;
  cerr << "text (pointer) = " << static_cast<const void *>(text) << endl;
  if (!text) throw std::runtime_error("Is a null pointer really expected?");
  cerr << "text (string) = \"" << text << '"' << endl;
  return text;
}

int main() {
  2_example;
  1_example;
  0_example;
}
Run Code Online (Sandbox Code Playgroud)

输出(可能是gcc中的一个bug ......但也许不是?!,因此问题):

text (pointer) = 0x8048d49
text (string) = "2"
text (pointer) …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ user-defined-literals c++11

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

Git:获得所有blob图案

在Git中,如何在对象数据库中找到包含字符串模式的所有blob的SHA-1 ID?git-grep仅提供文件路径而不提供sha1 ID.

git grep

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

主要的开源项目使用哪些GCC标志来控制C和C++中的未定义行为?

在处理未定义的行为时,主要的开源项目使用了一些GCC标志来解决编译器过于敏锐的问题,特别是在C和C++语言中.例如:

那还有什么?我显然可以从GCC文档中获取完整列表,其中标记将未定义的行为转换为什么样的实现定义行为.但是,我更感兴趣的是主要开源项目使用哪些选项以及为什么

c c++ gcc undefined-behavior

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

std :: showbase和std :: showpos是互斥的吗?

这个问题起源于我ostream & operator << (ostream &, some_type)对C++中使用通常的数值类型输出数值的正确方法的讨论.

我熟悉std :: showbase和std :: showpos在每个基础中的行为,它们基本上是互斥的.即:在十进制中没有显示基数,并且在正数上添加'+'; 而在十六进制或八进制中,显示了基数,但未显示"+"(也不是减号),因为打印类型的值就好像它被转换为无符号类型一样.

例如,这个简单(详细)的程序:

#include <iostream>

int main() {
  std::cout << std::dec << std::showpos << std::showbase << int64_t(+5) << std::endl;
  std::cout << std::oct << std::showpos << std::showbase << int64_t(+5) << std::endl;
  std::cout << std::hex << std::showpos << std::showbase << int64_t(+5) << std::endl;
  std::cout << std::dec << std::showpos << std::showbase << int64_t(-5) << std::endl;
  std::cout << std::oct << std::showpos << std::showbase << int64_t(-5) << std::endl;
  std::cout << std::hex << …
Run Code Online (Sandbox Code Playgroud)

c++ iostream ostream

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

如何在 perl 替换中转义 REPLACEMENT?

你如何完全逃脱 perl 替换的 REPLACEMENT 部分s// \Q并且\E不会因为工作,如下图所示:

对于上下文,当使用 perl 执行由 bash 脚本驱动的大型递归搜索和替换操作时会出现这种情况。这不是一个容易避免的情况。

以这个脚本为例:

$ cat example.sh
#!/bin/bash
set -v -x
EMAIL=user@example.org
echo "EMAIL = $EMAIL"
echo "Email address: here" | perl -p -e "s/here/$EMAIL/"
echo "Email address: here" | perl -p -e "s/here/\\Q$EMAIL\\E/"
echo "Email address: here" | perl -p -e "s/here/${EMAIL/@/\\@}/"
Run Code Online (Sandbox Code Playgroud)

让我们运行它:

$ ./example.sh
EMAIL=user@example.org
+ EMAIL=user@example.org
echo "EMAIL = $EMAIL"
+ echo 'EMAIL = user@example.org'
EMAIL = user@example.org
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。外壳没有破坏任何东西,我们正在回应我们的期望。

echo "Email address: …
Run Code Online (Sandbox Code Playgroud)

regex bash perl replace escaping

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

C++:noexcept(或throw())虚拟析构函数=默认值;

下面的代码合法吗?

class C
{
    virtual ~C() noexcept = default;
};
Run Code Online (Sandbox Code Playgroud)

或者

class C
{
    virtual ~C() throw() = default;
};
Run Code Online (Sandbox Code Playgroud)

(throw() 已弃用,但我的编译器不支持 noexcept ;;)

c++ destructor

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

如何在段落标签内使用“lorem”

我刚刚学习禅宗编码,并尝试这样做:

输入“lorem”并按 Tab 键将生成 50 个单词的 lorem 文本。

但是,如果我开始<p></p>,然后在标签内输入 lorem + tab,它不会生成 lorem 文本。

有一个更好的方法吗?

emmet

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

在Python中拆分

我有一个关于我正在阅读的字符串的问题,并根据分隔符将其拆分并将其存储在列表中.

我有这个输入1.2.3.4.在哪里.是分隔符.现在,当我使用分割时,我最后会得到这个字符"".这个角色是什么?

for element in data.split('.'):
    L.append(element)   
    print L  #prints out ["1","2","3","4",""] 
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是最后一个数组元素""?我想不仅在这个数组中,而且在字符串数据中摆脱这个元素.我试过使用element.rstrip(element)它但没有摆脱它.我认为我的大部分困惑都来自python中的"".Ialso尝试使用,L.remove("")但似乎没有用.

python string split

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