小编0xb*_*00d的帖子

正则表达式 - 在字符之间获取单词

给出以下示例字符串:"[ One].[Two ].[ Three ].[Four]" 我想匹配"One"; "两个","三个"和"四个".

换句话说:无论在这个单词周围有多少个空格,我都需要在括号之间得到这个词.

我用以下表达式尝试了它:

(?<=\[)(?s)(.*?)(?=\s*\])
Run Code Online (Sandbox Code Playgroud)

这导致" One","Two"," Three""Four".

编辑: 这比我第一次尝试的要复杂得多:

  1. 括号中包含许多(至少一个)单词,这些单词可能被任意字符(例如"[one]""[one] [two][three].[four]")分隔.
  2. 括号包含一个单词和许多,甚至没有空格(例如"[one]""[two ]""[ three ]".
  3. 这些单词块和附带的括号被一系列已知的字符包围: "These words [word-1] .. [word-n] are well known""These words [word-1] .. [word-n] are well known".

请注意,"[word-1] .. [word-n]"只代表上述块的任意计数.

我想只匹配括号中的单个单词,并消除环绕序列("These words""are well known")以及括号内和块之间可能存在的空格.另外,块之间可能存在的char(它不能只有一个)也应该被消除.希望这不是太奇怪;)

.net regex

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

WinAPI | 注销 RawInputDevice

如何从 RegisterRawInputDevices() 注销?

winapi raw-input

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

可本地化的WPF应用程序 - UICulture设置导致资源问题

我想创建一个可本地化的WPF应用程序.我按照AssemblyInfo.cs文件的注释中的说明操作:

//In order to begin building localizable applications, set 
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>.  For example, if you are using US english
//in your source files, set the <UICulture> to en-US.  Then uncomment
//the NeutralResourceLanguage attribute below.  Update the "en-US" in
//the line below to match the UICulture setting in the project file.
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我的应用程序不再启动了.我正在使用自定义App类:

namespace Namespace
{
    public partial class App : Application
    {
        [STAThread()]
        [SecurityPermission(SecurityAction.LinkDemand)]
        public static void Main()
        {
            var app = new App();

            app.InitializeComponent(); …
Run Code Online (Sandbox Code Playgroud)

c# wpf localization currentuiculture visual-studio

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

如何处理模板化仿函数的默认值

给定这样的函数:

template<typename functor>
void foo(functor const& f)
{
    if (f)
        f(1, 2);
}
Run Code Online (Sandbox Code Playgroud)

我希望能够分配一个默认值,其中f可以设置为类似的东西NULL.此外,对空函数进行虚假调用也是可能的.有没有什么我可以使用(从标准或boost图书馆),而不是自己创造这样的东西?

c++ templates functor

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

在GLSL着色器中使用输入/输出结构

在HLSL中,我可以写:

struct vertex_in
{
    float3 pos    : POSITION;
    float3 normal : NORMAL;
    float2 tex    : TEXCOORD;
};
Run Code Online (Sandbox Code Playgroud)

并将此结构用作顶点着色器的输入:

vertex_out VS(vertex_in v) { ... }
Run Code Online (Sandbox Code Playgroud)

GLSL中有类似的东西吗?还是我需要写一些类似的东西:

layout(location = 0) in vec4 aPosition;
layout(location = 1) in vec4 aNormal;
...
Run Code Online (Sandbox Code Playgroud)

opengl glsl hlsl2glsl

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

将矩阵`shared_ptr <vector <vector <T >> sp`的行'(*sp)[i]`传递给接受`shared_ptr <vector <T >>的函数`

对于某些人,我有一个std::shared_ptr<std::vector<std::vector<double>> sp并且需要传递给接受a 的函数.我怎样才能做到这一点?(*sp)[i]ifoostd::shared_ptr<std::vector<double>>

一种选择是foo(std::make_shared<std::vector<double>>((*sp)[i]),但这将创建向量的副本(*sp)[i].既然(*sp)[i]可能很大,我绝对不希望这种情况发生.

那么,有没有选项可以传递(*sp)[i]给我foo而不复制?

编辑:也许我们可以做以下事情:

foo(std::shared_ptr<std::vector<double>>(&(*sp)[i], [](std::vector<double>* p) { }));
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers c++11

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

我们可以使用检测习惯来检查一个类是否具有特定签名的成员函数吗?

给定(减少)检测习语的实现

namespace type_traits
{
    template<typename... Ts>
    using void_t = void;

    namespace detail
    {
        template<typename, template<typename...> class, typename...>
        struct is_detected : std::false_type {};

        template<template<class...> class Operation, typename... Arguments>
        struct is_detected<void_t<Operation<Arguments...>>, Operation, Arguments...> : std::true_type {};
    }

    template<template<class...> class Operation, typename... Arguments>
    using is_detected = detail::is_detected<void_t<>, Operation, Arguments...>;

    template<template<class...> class Operation, typename... Arguments>
    constexpr bool is_detected_v = detail::is_detected<void_t<>, Operation, Arguments...>::value;
}
Run Code Online (Sandbox Code Playgroud)

我们可以轻松检查一个类是否foo包含成员函数bar

struct  foo {
    int const& bar(int&&) { return 0; }
};

template<class T>
using bar_t = …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae type-traits c++14

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

迭代包含在两个范围的交集中的对象

标准库中是否有某些东西允许我迭代包含在两个范围的交集中的对象?

特别是,给定一个函数对象action,我想获得一个等价的程序

/* some container supporting a push_back operation */ intersection;
std::set_intersection(first1, last1, first2, last2,
    std::back_inserter(intersection));
for (auto const& element : intersection)
    action(element);
Run Code Online (Sandbox Code Playgroud)

无需插入intersection.当然,例如,编写这样的代码很容易

template<class InputIt1, class InputIt2, class UnaryFunction>
void for_each_in_intersection(InputIt1 first1, InputIt1 last1,
    InputIt2 first2, InputIt2 last2, UnaryFunction f)
{
    while (first1 != last1 && first2 != last2)
    {
        if (*first1 < *first2)
            ++first1;
        else
        {
            if (!(*first2 < *first1))
                f(*first1++);
            ++first2;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我希望标准库中已有可用的东西.

c++ containers stl c++-standard-library c++14

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

有条件地提供 using 声明

假设我有一个foo带有模板参数的类,T我想为对应于的引用和常量引用类型提供一个 using 声明T

template<typename T>
struct foo
{
    using reference = T&;
    using const_reference = T const&;
};
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用declarations来“启用”这些,如果T不是void 没有专门化整个班级foo

c++ templates type-traits enable-if c++17

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

与 std::stof 相比,编写通用的 string_to_float&lt;T&gt; 没有任何开销

我想编写一个string_to_float带有模板参数的函数,T分别满足、和、when和。我的尝试如下:string_to_float = std::stofstring_to_float = std::stodstring_to_float = std::stoldT = floatT = doubleT = long double

template<typename T>
T string_to_float(std::string const& s, std::size_t* pos = nullptr)
{
    static_assert(std::is_same_v<T, float> || std::is_same_v<T, double> || std::is_same_v<T, long double>,
        "T is not a built-in floating point type");

    if constexpr (std::is_same_v<T, float>)
        return std::stof(s, pos);
    if constexpr (std::is_same_v<T, double>)
        return std::stod(s, pos);
    if constexpr (std::is_same_v<T, long double>)
        return std::stold(s, pos);

    return T{};
}
Run Code Online (Sandbox Code Playgroud)

不过,我对这个return声明感到担忧。虽然在这种情况下静态断言已经失败,但我不想在 …

c++ c++20 if-constexpr c++-attributes

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