小编TSG*_*TSG的帖子

RedHat devtoolset - 分发编译代码的含义

我正在运行 CentOS 6.4 并且需要更高版本的 C++ 编译器来构建我的开发工具(在本例中为 Qt Creator)。

我不清楚使用 devtools 的含义,我希望有人能解释一下。

  1. 如果我使用 devtools 编译程序,这是否意味着可执行文件将在其他 Centos 6.4 安装上运行而无需更改?
  2. 或者..我知道我编译的程序必须附带库或其他文件吗?
  3. 如果是这样......我是否必须修改我的 C++ 代码以引用更高版本的库?或者这是由安装我编译的程序的人完成的

c++ libstdc++ libraries devtoolset redhat-dts

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

从 ini 文件的某个部分读取某个键(sed/awk ?)

我需要从具有典型结构的 ini 文件中检索键的值:

[abcd]
key1=a
key2=b
[efgh]
key1=c
key2=d
[hijk]
key1=e
key2=f
Run Code Online (Sandbox Code Playgroud)

关键名称在不同的部分中重复,并且部分的命名/顺序没有一致。我怎么能从 efgh 中找到 key1?如果我 grep 然后我会找到所有的 key1(而且我不知道这些部分的顺序)。

我怀疑 sed 或 awk 可以做到这一点,但我找不到它...

awk ini sed file

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

导航栏无法使用ng-bootstrap&angular 4在浏览器中渲染

我正在构建我的第一个Angular 4应用程序,使用ng-bootstrap(Bootstrap 4 for Angular) - 不使用常规Boostrap

ng-bootstrap网站(https://ng-bootstrap.github.io/#/components/accordion/api)没有列出导航栏的组件(就像在Bootstrap 3或常规bootstrap 4中那样).这是否意味着我必须从下拉菜单/按钮构建菜单?或者我必须将常规的Bootstrap 4与ng-bootstrap混合使用?

我尝试在html中创建这个菜单但它不会在浏览器中呈现(只是一个品牌"MyWebSiteName"和我的屏幕上的小灰盒,没有导航)

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">MyWebSiteName</a>
    </div>
     <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1 <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Page 1-1</a></li>
            <li><a href="#">Page 1-2</a></li>
            <li><a href="#">Page 1-3</a></li>
          </ul>
        </li>
        <li><a href="#">Page 2</a></li>
        <li><a href="#">Page 3</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right"> …
Run Code Online (Sandbox Code Playgroud)

ng-bootstrap angular

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

需要释放QList内容吗?

我有一个充满动态创建对象的Qlist。在终止程序之前,我先调用myqlist.clear()

我的问题是:这还会删除(释放)列表中包含的对象吗?Valgrind给了我一些丢失的块,我想知道我是否误解了qlist clear方法的工作方式。

或者,我是否需要遍历qlist并删除每个对象?


更新:我可以确认mylist.erase(iterator)正在从列表中删除该项目,但没有释放动态分配的对象。(该对象是一个动态实例化的类)。很奇怪!我从Qlist切换到QLinkedList,但结果相同。记住,我的QLinkedList是QLinkedList <myclass>而不是QLinkedList <* myclass>

这是实际的代码,以防有人发现我在做错什么:

// Here I define a couple important items.  Note that AMISendMessageFormat is a class
typedef QLinkedList<AMISendMessageFormat> TSentMessageQueue;
TSentMessageQueue m_sentMessageQueue;

// Here I create the message and append to my QLinkedList
AMISendMessageFormat *newMessage = new AMISendMessageFormat(messageToSend);
m_sentMessageQueue.append(*newMessage); 

// Here I delete
for (TSentMessageQueue::Iterator sMessagePtr = m_sentMessageQueue.begin(); sMessagePtr != m_sentMessageQueue.end(); )
{
    sMessagePtr = m_sentMessageQueue.erase(sMessagePtr);  
    qDebug() << "Sent size after erase: " << m_sentMessageQueue.size();  // Confirmed linked list is shrinking in size
} …
Run Code Online (Sandbox Code Playgroud)

c++ memory qt qlist delete-operator

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

使用Qt / C ++在Linux中设置文件所有者:组

我需要使用Qt 5.7 / C ++在Linux下更改文件的所有者和组。我发现了QFileInfo::ownerIDQFileInfo::groupID吸气剂,但这些值似乎没有塞特尔。

我需要相当于Qt的chown。

有没有一种使用Qt函数设置这些值的方法?

linux qt file-ownership qfileinfo

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

在 ngOnInit 中添加验证器时的 ExpressionChangedAfterItHasBeenCheckedError

我正在尝试向输入添加自定义验证器,但是当我这样做时,它会触发 ExpressionChangedAfterItHasBeenCheckedError 错误,指出某些内容从 TRUE 更改为 FALSE。

我将问题追溯到以下行:

ngOnInit(): void {
    this.ipv4Fields.addControl('gateway', new FormControl('', [TabValidator.ipaddress()]));
}
Run Code Online (Sandbox Code Playgroud)

如果我删除 TabValidator.ipaddress() 那么错误就会消失。同样,如果我的验证器强制返回“null”,那么错误就会消失。我的验证器如下:

private static _ipaddress(address: string): any {
    console.log('checking ip address: '+address+' valid: '+ip.isV4Format(address)+' is null: '+(address === null ? 'yes' : 'no'));
    if (!ip.isV4Format(address)) { return { 'wrongFormat': true }; }
    console.log('returning null');
    return null;
}
public static ipaddress(): ValidatorFn {
    return (control: AbstractControl): { [key: string]: any } => {
        console.log('validator returning: '+TabValidator._ipaddress(control.value));
        return TabValidator._ipaddress(control.value);
    };
}
Run Code Online (Sandbox Code Playgroud)

从控制台日志看来,验证器每次都返回相同的值。

有人可以解释这里出了什么问题吗?我无法解释什么变量从“真”变为“假”,因为上面的行中没有涉及布尔值。验证器如何返回不同的值而不出现在我的控制台日志中?

我读了一个关于不在 ngOnInit 中做事的 …

validation ngoninit angular

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

根据日期从 git 中检出旧提交

由于与另一个项目(共享此代码)不兼容,我试图从 git 检索旧提交。git 存储库是 OpenZWave。

我在 SO 上找到了一个帖子,说要发出命令:

git checkout @{14.days.ago}
Run Code Online (Sandbox Code Playgroud)

但这导致:

warning: Log for '' only goes back to Wed, 23 May 2018 08:02:05 -0400.
HEAD is now at 77a05ed... Update hs-ms100plus.xml
Run Code Online (Sandbox Code Playgroud)

我不知道出了什么问题 - 显然有比今天更早的提交。这个命令有什么问题?(该命令是否会导致我的克隆被 14 天前的代码替换)

git git-checkout

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

如何不创建临时 QRegularExpression 对象

我在 Qt Creator 中收到此警告:

不要创建临时 QRegularExpression 对象。使用静态 QRegularExpression 对象代替 [clazy-use-static-qregularexpression]

这是关于下面的代码片段:

QRegularExpression re("SEARCHING...",QRegularExpression::CaseInsensitiveOption);
QRegularExpressionMatch match = re.match(frame);
if (match.hasMatch()) {
Run Code Online (Sandbox Code Playgroud)

这对我来说并不明显,我应该如何使用QRegularExpression

qt clang qt-creator qregularexpression

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

从函数返回一个QString - 线程安全吗?

我是Qt的新手 - 但这可能是一个非常基本的c ++问题.我有一个返回QString的简单函数:

QString testclass::myfunc(int i)
{
    QString result;
    switch (i) {
    case 1: result = "one"; break;
    case 2: result = "two"; break;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这样安全吗?c编译器是否确保返回值在内存中保留足够长的时间以供调用函数使用?(或者这会冒内存损坏的风险).如果是后者,返回QString的正确方法是什么?(结果var必须是静态的吗?结果必须是testclass的成员吗?)

QString包含常量是否重要?(id case 3分配给随机字符串的结果)

如果myfunc是一个静态方法,我想从不同的线程调用怎么办?我是否必须通过引用传入额外的Qstring以确保每个调用者获得自己的变量(并返回void)?


这是实际的功能(清理了一下) - 并注意到这个功能是STATIC,以防有所不同:

QString L::toString(const L::editions &level)
{
    QString levelStr;
    switch (level) {
        case L::one:
            levelStr = "one";
            break;
        case L::two:
            levelStr = "two";
            break;
        case L::three:
            levelStr = "thre";
            break;
        default:
            levelStr = "Internal Error";
            break;
    }
    return levelStr;
}
Run Code Online (Sandbox Code Playgroud)

然而valgrind抱怨(第121行是'levelStr ="one";')

34 bytes in …
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt function return-value

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

将C++结构传递给期望C结构的库

我正在Linux中编写一个C++程序,需要使用用C编写的旧库.库使用C结构将信息传入和传出函数,这些结构是字节对齐的(无填充).

我的理解是C++中的结构实际上是一个对象,而C中的结构只是一个内存块,被分成可单独寻址的部分.

如何在C++中创建C样式结构以传递给库?(我不能传递一个对象)

c c++ linux struct

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