小编Dre*_*ann的帖子

正则表达式 - 不包含某些字符

如果句子中的任何地方都没有<或>,我需要一个正则表达式来匹配.

如果<或>中的任何一个都在字符串中,那么它必须返回false.

我在这方面取得了部分成功,但前提是我的<>在开头或结尾:

(?!<|>).*$
Run Code Online (Sandbox Code Playgroud)

如果这有所不同,我正在使用.Net.

谢谢您的帮助.

添加问题:

我想知道,如果文本包含像这样的标签,你如何修改下面的正则表达式只返回false __CODE__

regex regex-negation

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

如何让我的班级免受 C++ 中“自动值=代理副本”地雷的影响?

我正在开发一个相当复杂的数学库,当客户端代码使用 auto 时,我发现了一个令人讨厌的错误。在创建一个最小的复制案例来提出一个问题的过程中,我意识到我可以单独使用标准库来复制类似的东西。查看这个简单的测试用例:

#include <vector>
#include <assert.h>

int main()
{
    std::vector<bool> allTheData = {true, false, true};

    auto boolValue = allTheData[1]; // This should be false - we just declared it.
    assert(boolValue == false);
    boolValue = !boolValue;
    assert(boolValue == true);

    assert(allTheData[1] == false); // Huh? But we never changed the source data! Only our local copy.
}
Run Code Online (Sandbox Code Playgroud)

住在 Godbolt 上。(有趣的事实:Clang 实际上将其优化为写入“7” - 3 个真位 - 以及对 __assert_fail 的调用。)

是的,我知道 std::vector<bool> 很烂- 但在这种情况下,创建一个只有几行长的最小可重现示例很方便)这是一个较长的示例,它不使用 std::vector<bool>,并且使用自定义容器类型,删除了分配和复制/移动,仍然显示问题。

我了解幕后发生的事情,operator[] 返回的代理类旨在实现allTheData[1] …

c++ copy-assignment

153
推荐指数
3
解决办法
8321
查看次数

从C++成员函数调用Objective-C方法?

我有一个class(EAGLView)调用类的成员函数C++没有问题.现在,问题是我需要在C++该类中调用一个objective-C function [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];我在C++语法中无法做到的.

我可以将这个Objective-C调用包装到同一个Objective-C类中,它首先调用C++类,但后来我需要以某种方式调用该方法C++,而我无法弄清楚如何去做.

我试图给一个指向EAGLViewC++成员函数的对象的指针,并EAGLView.h在我的C++类头中包含" " 但我得到了3999个错误..

那么......我该怎么做?一个例子很好..我只发现C了这样做的纯粹例子.

c++ objective-c

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

##(double hash)在预处理器指令中做了什么?

#define DEFINE_STAT(Stat) \
struct FThreadSafeStaticStat<FStat_##Stat> StatPtr_##Stat;
Run Code Online (Sandbox Code Playgroud)

上面这行来自虚幻4,我知道我可以在不真实的论坛上问过它,但我认为这是一个普遍的C++问题,值得在这里提出.

我理解第一行定义了一个宏,但是我不熟悉C++中的预处理器恶作剧,所以我迷失在那里.逻辑告诉我反斜杠意味着声明继续到下一行.

FThreadSafeStaticStat看起来有点像模板,但是那里正在进行#和C++中我从未见过的语法

有人能告诉我这意味着什么吗?我知道您可能无法访问Unreal 4,但这只是我不理解的语法.

c c++ concatenation c-preprocessor

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

int8_t和uint8_t是char类型吗?

鉴于这个C++ 11程序,我应该期待看到一个数字还是一个字母?还是没有期望?

#include <cstdint>
#include <iostream>

int main()
{
    int8_t i = 65;
    std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)

标准是否指定此类型是否可以是字符类型?

c++ iostream standard-library language-lawyer c++11

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

首选标准用途:基于范围或std :: for_each

C++ 11中,所有元素都有两个循环(基于for和for_each的范围).是否有理由偏爱另一个或者是否存在更适合的情况?

for (auto& elem: container) {
  // do something with elem
}

std::for_each(container.begin(), container.end(),
              [](Elem& elem) {
                // do something with elem
              });
Run Code Online (Sandbox Code Playgroud)

我的想法是第一个更简单,类似于其他语言中基于范围的循环,而第二个也适用于不完整容器的序列,第二个更类似于其他std算法.

c++ coding-style c++11

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

为什么终端在Ubuntu中按下箭头键时显示"^ [[A""^ [[B""^ [[C""^ [[D"]?

我首先在Windows上用Ansi C编写了一个小程序,然后我在Ubuntu上用内置的GCC编译它.

该计划很简单:

  • 从控制台读取行scanf().
  • 分析字符串并计算.

但奇怪的事情发生了.当我尝试移动光标时,它会打印四个字符:

  • 按下Up打印"^ [[A"
  • 按下Dn打印"^ [[B"
  • 按下Rt打印"^ [[C"
  • 按下Lt打印"^ [[D"

  • 如何避免这种情况?

  • 为什么打印这4个字符而不是移动光标?

c ubuntu

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

在C++ 11中是否存在零大小的std :: array的原因?

考虑以下代码片段,这是C++ 11编译器完全可以接受的:

#include <array>
#include <iostream>

auto main() -> int {
  std::array<double, 0> A;

  for(auto i : A) std::cout << i << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据标准§23.3.2.8[ 零大小的阵列 ]:

1数组应为特殊情况提供支持N == 0.

2在这种情况下N == 0,begin() == end() ==独特的价值.返回值
data()未指定.

3调用front()back()零大小数组的效果是未定义的.

4成员函数swap()应具有等效的noexcept-speci fi cation noexcept(true).

如上所示,零大小的std::arrays在C++ 11中是完全允许的,与零大小的数组(例如int A[0];)相比,它们被明确禁止,但是一些编译器(例如,GCC)允许它们以未定义的行为为代价. .

考虑到这种"矛盾",我有以下问题:

  • 为什么C++委员会决定允许零大小的std::arrays?

  • 有什么有价值的用途吗?

c++ arrays c++11 stdarray c++14

41
推荐指数
1
解决办法
4267
查看次数

如何在C++中初始化字符串集?

在声明字符串集时,我有几个要初始化的单词.

...
using namespace std;
set<string> str;

/*str has to contain some names like "John", "Kelly", "Amanda", "Kim".*/
Run Code Online (Sandbox Code Playgroud)

我不想str.insert("Name");每次都使用.

任何帮助,将不胜感激.

c++ string set

34
推荐指数
4
解决办法
8万
查看次数

是否在GCC 4.x/C++ 11中重新计算了std :: string?

std::string使用gcc 4时引用计数-std=c++0x-std=c++11

c++ gcc stdstring c++11

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