小编Par*_*tes的帖子

为什么必须从工作树的顶级目录运行git-bisect?

如果尝试从存储库的根目录以外的任何位置运行任何git-bisect命令,则会告诉您:

您需要从工作树的顶层运行此命令.

这是为什么?我知道没有其他git命令有这个要求,我认为没有明显的理由,bisect应该是特殊的.手册页也没有提到这个限制.

这真的不是什么大不了的事.我大多只是好奇.

git git-bisect

54
推荐指数
3
解决办法
6983
查看次数

如何在Git Gui中一次暂存所有文件?

我刚刚在一个文件夹上创建了一个GIT.我现在想通过"暂存"所有文件来添加该文件夹的内容.在GUI中,有没有办法选择所有文件.我有超过4000个文件,一次点击一个文件证明有点痛苦.

git staging git-gui

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

如何确定文件是否包含在Boost Filesystem Library v3的路径中?

如何确定文件是否包含在boost文件系统v3的路径中.

我看到有一个更小或更大的运算符,但这似乎只是词汇.我看到的最好的方法如下:

  • 获取文件和路径的两个绝对路径
  • 删除文件的最后一部分,看它是否等于路径(如果它包含它)

有没有更好的方法来做到这一点?

c++ boost boost-filesystem

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

如何处理可能指向内部数据的引用参数?

我不止一次追踪到一个相当令人困惑的错误,却发现它是由于const参考参数在某个方法中改变了价值.这一直是接收引用参数的方法的结果,该参数恰好引用其自身数据成员之一(的一部分).因此,当该方法改变该成员时,引用(尽管是const)也会发生变异.

我正在谈论的一个简单例子:

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

class RecentStringBuffer
{
public:
    const std::string & at(size_t index)
    {
        return v.at(index);
    }

    void add(const std::string & s)
    {
        // Remove any previous occurances
        v.erase(std::remove(v.begin(), v.end(), s), v.end());
        // Prepend the new entry
        v.insert(v.begin(), s);
        // Truncate older entries
        v.resize(std::min<size_t>(v.size(), maxEntries));
    }

private:
    const int maxEntries = 10;
    std::vector<std::string> v;
};

int main()
{
    RecentStringBuffer r;
    r.add("A");     // r == [A]
    r.add("B");     // r == [B, …
Run Code Online (Sandbox Code Playgroud)

c++ reference

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

HTTPS使用urllib2登录

我目前有一个小脚本可以下载网页并提取一些我感兴趣的数据.没什么好看的.

目前我正在下载这样的页面:

import commands
command = 'wget --output-document=- --quiet --http-user=USER --http-password=PASSWORD https://www.example.ca/page.aspx'
status, text = commands.getstatusoutput(command)
Run Code Online (Sandbox Code Playgroud)

尽管这很有效,但我认为删除对wget的依赖是有意义的.我认为将上面的内容转换为urllib2应该是微不足道的,但到目前为止我没有成功.互联网是完整的urllib2示例,但我没有发现任何符合我对HTTPS服务器的简单用户名和密码HTTP身份验证的需求.

python authentication https urllib2

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

如何从可能包含或不包含 null 的缓冲区构造“std::string”?

我有一个char已知大小的缓冲区(为简单起见,假设是一个固定大小的数组),我想从中构造一个std::string. 此缓冲区中的字符串可能以 null 结尾,或者可能会一直运行到并包括最后一个char. 我希望创建一个std::string包含直到第一个空字节缓冲区末尾的内容(以先到者为准)的内容。

这似乎是一件很常见的事情,但在查看 API 时,解决方案对我来说并不是显而易见的std::string

  • std::string有一个构造函数接受范围const char *和长度,但是这个构造函数很高兴地继续过去的空字节并将它们复制到字符串中。
  • 在构造之前调用std::strlen()缓冲区string不是一个选项,因为strlen要求缓冲区以空终止,但情况可能并非如此。
  • 我们可以使用上面的构造函数来创建一个std::string包含空值的对象,然后将其大小调整到第一个空值之前,但这会浪费内存,因为string会被过度分配。

执行此操作的最佳和/或惯用方法是什么?

c++ stdstring null-terminated

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

Clang:覆盖之前在命令行上指定的所有警告和警告错误标志

gcc可以在命令行上抛出一堆-Wsome-issue和标志,然后在末尾附近-Werror=other-issue用一个标志取消它们。-w

看来情况并非如此clang。尾随-w会抑制某些警告,但不会抑制其他警告。请参阅此处的示例。我知道我可以通过-Wno-some-issue和分别手动禁用每个警告-Wno-error=other-issue,但从长远来看,管理起来确实很痛苦。

我错过了什么吗?有没有办法取消所有早期的警告标志?是否有理由-w可以抑制某些警告而不抑制其他警告?

背景:我的具体用例是一个包含混合源文件的库。一些新的和一些古老的、半第三方的东西我们永远不想看,更不用说编辑了。该项目在全局范围内设置了一些半严格的警告标志,但对于这几个文件,我想覆盖全局标志并禁用所有警告和警告作为错误。在 CMake 中,这是通过设置COMPILE_OPTIONS这些文件的属性来完成的,该属性将给定的标志附加在全局标志之后。这样gcc效果很好,但事实clang证明这是一个令人头痛的问题。

(是的,我知道我可以重新组织项目以强制将这些文件编译到单独的目标中,但我希望避免这种情况。)

c c++ clang

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

如何检查一个类是否具有一个或多个具有给定名称的方法?

有许多不同的技巧可用于检查类是否Foo具有名为 的方法bar。例如:

  • 如果我们关心方法签名,我们会围绕类似的东西构建一个特征std::void_t<decltype(static_cast<ing(Foo::*)(char) const>(&Foo::bar))>
  • 如果我们不关心签名,我们可以使用类似的东西std::void_t<decltype(&Foo::bar)>

如果Foo有多个名为 的方法bar,则前者继续正常工作(因为最多一个重载将与 兼容static_cast),但是,后者将中断,大概是因为decltype(&Foo::bar)变得不明确。

是否有一种技术可以检测一个类是否具有一个或多个具有给定名称的方法,而不管方法签名如何?如果它可以在 C++14 中工作,那就加分了。

示例代码(Godbolt 链接):

#include <type_traits>

template<typename T, typename = void> struct HasIntBar_t : std::false_type {};
template<typename T> struct HasIntBar_t<T, std::void_t<decltype(static_cast<int(T::*)(char)>(&T::bar))>> : std::true_type {};
template<typename T> inline constexpr bool HasIntBar = HasIntBar_t<T>::value;

template<typename T, typename = void> struct HasAnyBar_t : std::false_type {};
template<typename T> struct HasAnyBar_t<T, std::void_t<decltype(&T::bar)>> : std::true_type {};
template<typename T> inline constexpr bool …
Run Code Online (Sandbox Code Playgroud)

c++ methods templates sfinae c++14

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