小编Seg*_*las的帖子

标签顺序是否与有效XML相关?

换一种说法:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <tag1>
  <tag1.1></tag1.1>
 </tag1>
 <tag2 />
<root>
Run Code Online (Sandbox Code Playgroud)

是相同的:

<?xml version="1.0" encoding="UTF-8"?>
    <root>
     <tag2 />
     <tag1>
      <tag1.1></tag1.1>
     </tag1>     
    <root>
Run Code Online (Sandbox Code Playgroud)

xml tags validation

10
推荐指数
2
解决办法
5949
查看次数

Malloc,免费和分段错误

我不明白,为什么在这段代码,调用"自由"导致段错误:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *char_arr_allocator(int length);

int main(int argc, char* argv[0]){

    char* stringa =  NULL;
    stringa = char_arr_allocator(100);  
    printf("stringa address: %p\n", stringa); // same address as "arr"
    printf("stringa: %s\n",stringa);
    //free(stringa);

    return 0;
}

char *char_arr_allocator(int length) {
    char *arr;
    arr = malloc(length*sizeof(char));
    arr = "xxxxxxx";
    printf("arr address: %p\n", arr); // same address as "stringa"
    return arr;
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下吗?

谢谢,塞戈拉斯

c malloc free segmentation-fault

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

javascript正则表达式为00-59(秒)之间的数字

我想检查一个字段是否是一个有效的时间值(只是几秒).所以我想接受0到59之间的数字.我出来了:

[0-5][0-9]?
Run Code Online (Sandbox Code Playgroud)

几乎完成了这项工作.但排除数字7-8-9 ...如果用户数字07,它可以工作,但我不想强迫用户数字前0.这样我尝试这样的事情:

([0-5][0-9]? | [0-9]) 
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并产生太多递归调用的错误.

任何的想法?

javascript regex

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

忽略针对 xsd 的 xml 验证中的元素顺序

Ia 处理电子邮件并将一些标头保存在 xml 文档中。我还需要根据 xml 模式验证文档。

正如主题所暗示的那样,我需要验证忽略元素顺序,但是据我所知,这似乎是不可能的。我对么?

如果我将标题放入 a 中<xsd:sequence>,顺序显然很重要。如果我使用<xsd:all>顺序将被忽略,但由于某种奇怪的原因,这意味着元素必须至少出现一次。

我的xml是这样的:

<headers>
  <subject>bla bla bla</subject>
  <recipient>rcp01@domain.com</recipient>
  <recipient>rcp02domain.com</recipient>
  <recipient>rcp...@domain.com</recipient>
</headers>
Run Code Online (Sandbox Code Playgroud)

但我认为即使主题和收件人元素交换,最终文件也是有效的。

真的无事可做吗?

xml validation xsd

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

ASCII和printf

关于C中的int和chars,我有一个小的(大的,愚蠢的)问题.我记得我的研究中"chars是小整数和反之​​亦然",这对我来说没问题.如果我需要使用小数字,最好的方法是使用char类型.

但是在这样的代码中:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
  int i= atoi(argv[1]);
  printf("%d -> %c\n",i,i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用我想要的每个数字作为参数.因此,使用0-127我获得了预期的结果(标准ASCII表),但即使有更大或更大的数字,它似乎工作...

这是一些例子:

-181 -> K
-182 -> J
300 -> ,
301 -> -
Run Code Online (Sandbox Code Playgroud)

为什么?在我看来,它在ascii表周围循环,但我不明白如何.

c printf ascii

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

检索作为QLineEdit小部件的QTableWidget单元格的值

我创建了一个QLineEdit,设置一个验证器并使用以下代码将其放在表中:

ui->moneyTableWidget->setCellWidget(rowsNum, 1, newQLineEdit);
Run Code Online (Sandbox Code Playgroud)

然后,我有另一个类来操作表的数据,做一个列的每个值的总和.这是代码:

int Calculator::calculatePricesSum(QTableWidget &moneyTableWidget){
    double total = 0;
    QWidget *tmpLineEdit;
    QString *tmpString;
    for(int row=0; row<moneyTableWidget.rowCount(); row++){
        tmpLineEdit = (QLineEdit*)moneyTableWidget.cellWidget(row,1);       
        tmpString = tmpLineEdit.text();
        total += tmpString->toDouble();
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

但是建筑失败并出现此错误:

/ home/testpec/src/nokia QT/MoneyTracker-build-simulator /../ MoneyTracker/calculator.cpp:11:错误:在分配时无法将'QLineEdit*'转换为'QWidget*'

为什么这个转换错误?

另一个子问题:将表作为参考传递可以节省内存吗?这可能是问题吗?我正在为诺基亚智能手机开发,我认为按价值传递对象是浪费内存......(对不起,如果是一个愚蠢的问题,但我对C++和所有指针的东西有点生疏......)

c++ qt qtablewidget qlineedit

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

C++,在QTableWidget中添加/删除行

我正在创建一个带有表格和"添加行"按钮的简单应用程序.使用Qt Creator我以为我可以这样做:

QObject::connect(ui->addRowButton, SIGNAL(clicked()),
                     ui->moneyTableWidget, SLOT(insertRow(1)));
Run Code Online (Sandbox Code Playgroud)

但我不能.我对Qt很新,我可能错了,但认为问题是insertRow不是QTableWidget的SLOT方法...

如何实现行插入?

c++ qt4 qtablewidget

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

Java,从多个线程中删除元素

我有多个线程在列表上迭代.所有这些线程最终都会找到一个匹配元素来从这样的列表中删除.

为了避免不一致的状态我应该使用什么列表?向量?数组列表?其他?

这是一个使用Vectors的例子.它不会出错,但我确信它可以:

for(int i=0; i<timersVector.size(); i++){
    currTimerThread = timersVector.get(i);

    if(currTimerThread.getRowViewTag().equals(parent.getTag())){
        currTimerThread.stopTimer();
        timersVector.remove(i);
        Log.i(tag, "timerVector size: "+timersVector.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果一个线程正在进入循环并且大小为10并且正好在另一个线程在5处移除元素之后,那么第一个线程会发生什么?

谢谢你的帮助

java collections thread-safety

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

C,sprintf和string和int的"sum"

我很多时候没有使用过C,现在我必须修改一小段代码.有一点我无法理解:

char filename[20];
filename[0] = '\0';
for (j=0; j < SHA_DIGEST_LENGTH; j++){
  sprintf(filename + strlen(filename),"%02x",result[j]);
}
Run Code Online (Sandbox Code Playgroud)

在第一行中,一个20个字符的字符串被dleclared.在第二行中,第一个字符设置为'\ 0',我想是一个空字符串.

在for循环中我不明白文件名和它的长度之间的"总和"...... sprintf的第一个参数应该是一个缓冲区,在那里复制右边的格式化字符串.这笔款项的结果是什么?在我看来,我正在尝试将数组和整数相加...

我错过了什么?

c printf

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

在Perl中初始化数组的困难

我有以下代码:

print Dumper($dec_res->{repositories}[0]);
print Dumper($dec_res->{repositories}[1]);


my @repos = ($dec_res->{repositories});
print scalar @repos . "\n";
Run Code Online (Sandbox Code Playgroud)

输出如下:

$VAR1 = {
          'status' => 'OK',
          'name' => 'apir',
          'svnUrl' => 'https://url.whatever/svn/apir',
          'id' => 39,
          'viewvcUrl' => 'https://url.whatever/viewvc/apir/'
        };
$VAR1 = {
          'status' => 'OK',
          'name' => 'CCDS',
          'svnUrl' => 'https://url.whatever/svn/CCDS',
          'id' => 26,
          'viewvcUrl' => 'https://url.whatever/viewvc/CCDS/'
        };

1
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么$dec_res->{repositories}显然是阵列但@repos不是?

在这里我打印了大小,但即使尝试访问元素$repos[0]仍然返回错误.

倾销$repos[0]实际上打印整个结构...像倾倒$dec_res->{repositories}

arrays perl hash

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