小编sev*_*ine的帖子

在什么情况下使用System.UnicodeString.Format?

我的环境是Windows 7 pro(32位)上的RADStudio XE4 Update1。

我发现C++ Builder中有一个System::UnicodeString::Format()静态方法。

Format()可以如下使用。但是,我认为可以通过使用 来执行相同的操作String().sprintf()

String str;

// --- (1) ---
str = String::Format(L"%2d, %2d, %2d", ARRAYOFCONST((10, 2, 3)));
ShowMessage(str); // 10, 2, 3

// --- (2) ---
str = String().sprintf(L"%2d, %2d, %2d", 10, 2, 3);
ShowMessage(str); // 10, 2, 3
Run Code Online (Sandbox Code Playgroud)

我的问题是在哪种情况下Format()使用该函数比使用其他函数更好?

这只是品味问题吗?

c++builder

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

此样本中使用的运算符"<"在哪里?

我使用"map"尝试了STL示例程序.

http://ideone.com/LB8xvh

#include <iostream>
#include <map>
#include <cstring>
using namespace std;

class ItemName
{
    char name[80];
public:
    ItemName(char *s) { strcpy(name, s); }
    char *get() { return name; }
};

bool operator<(ItemName a, ItemName b)
{
    return strcmp(a.get(), b.get()) < 0;
}

class ItemObj
{
    char str[80];
public:
    ItemObj(char *s) { strcpy(str, s); }
    char *get() { return str; }
};

char itemdata[][80] = {
    "potion", "heal HP",
    "key", "unlock a door",
    "lamp", "light",
};


int main() {
    map<ItemName, ItemObj> …
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

(char*)使用offsetto转换为skip

我正在研究安全编码.

在下一页的第二个代码示例中,建议使用(char*)表示"skip"变量. https://www.securecoding.cert.org/confluence/display/seccode/EXP08-C.+Ensure+pointer+arithmetic+is+used+correctly

我不太清楚这个例子中的地址计算.所以我做了以下代码.

#include <stddef.h>
#include <iostream>
using namespace std;

// https://www.securecoding.cert.org/confluence/display/seccode/EXP08-C.+Ensure+pointer+arithmetic+is+used+correctly

struct big {
    unsigned long long ul1_1; // 8
    unsigned long long ul1_2; // 8
    unsigned long long ul1_3; // 8
    int si_4; // 4
    int si_5; // 4
};

void getAdrs(void *p) {
    cout << p << endl;
}

int main() {
    size_t skip = offsetof(struct big, ul1_2);

    struct big *s = (struct big *)malloc(sizeof(struct big));

    cout << skip << endl; // 8

    getAdrs(s               ); // …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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

Mathf.RoundToInt()的行为

我对Mathf.RoundToInt()有疑问

int val = Mathf.RoundToInt(10.5f);
val = Mathf.RoundToInt(9.5f);
val = Mathf.RoundToInt(8.5f);
Run Code Online (Sandbox Code Playgroud)

以上产生"10,10,8"而不是"11,10,9".

根据Unity的参考手册,当第一个小数位为"5"(例如8.5 - > 8.0)时,Mathf.RoundToInt()返回"偶数值".

我想知道Mathf.RoundToInto()返回的原因,不像普通的舍入(例如8.5 - > 9.0,9.5 - > 10.0).

algorithm unity-game-engine

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

如何将值从Dialog(Form)中的20个项传递给调用者(Form)

我在C++ Builder XE4上工作VCL.

我有以下组件.

FormMain有

  • TButton*B_select;

FormSelect(或DialogSelect)有

  • TComboBox*CB_list;
  • TButton*B_ok;
  • TButton*B_cancel;

期望的行为

  1. @FormMain,单击B_select打开FormSelect
  2. @FormSelect,在CB_list中选择列表
  3. @FormSelect,单击B_ok将listindex传递给FormMain

在上面的第3步,我想做:

  • 关闭FormSelect
  • 将listindex传递给调用者(FormMain)

通过使用对话框,我可以从Modal Result Constans返回一个值. http://docwiki.embarcadero.com/RADStudio/XE5/en/Modal_Result_Constants

但是,当我想从20个或更多项中返回1个值时,如何使用Form/Dialog传递该值?

delphi c++builder

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

CentOS 和 Ubuntu 上的“常规文件”是什么?

我的环境是:

  • CentOS 6.9
  • Ubuntu 16.04 LTS

GNU coreutils 8.4 有 test 命令来检查文件 using-f选项。

man test 显示

  -f FILE
         FILE exists and is a regular file
Run Code Online (Sandbox Code Playgroud)

“常规文件”的定义对我来说是模棱两可的。

在终端上,我做了

$ touch afile
$ ln -fs afile LN-FILE
Run Code Online (Sandbox Code Playgroud)

然后,我执行了以下脚本(check_file_exist_180320_exec)

#!/usr/bin/env bash
if [ -e LN-file ]
then
    echo "file exists [-e]"
fi

if [ -f LN-file ]
then
    echo "file exists [-f]"
fi
Run Code Online (Sandbox Code Playgroud)

对于 CentOS 和 Ubuntu,对于符号链接文件 (LN-FILE),都显示 -e 和 -f。

但是, ls -l 返回l:symbolik link(不是-:regular file)LN-FILE …

linux file-type

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

什么是"总功能"?

在"C编程语言的JPL机构编码标准"中,我在规则15(第14页)的正下方找到了以下句子:

"这与使用总函数优于非总函数的原则是一致的."

我之前没有听过"全部功能".这是什么?你能给我一些总函数的例子吗?

以下是JPL文档的链接.

http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

c

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

C++中组合(Object Composition)的目的是什么

我不太确定组合(对象组合)的目的。

在 Composition 中,一个类可以有另一个类的实例。

class CInner
{
public:
   CInner();
   virtual ~CInner();
   void Func();
};

class COuter
{
public:
   COuter();
   virtual ~COuter();
   void Func();
private:
   CInner m_inner; // Composition
};
Run Code Online (Sandbox Code Playgroud)

组合是否用于将大类细分为小类的组合?

是否有任何示例表明与不使用组合时相比,组合是有用的。

c++

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

bash>禁止使用重定向(>)

我的环境:

CentOS 6.5
bash 4.1.2(1)
Run Code Online (Sandbox Code Playgroud)

有时当我打算在文件中添加内容时,而不是

$ echo "xxx" >> mymemo.txt
Run Code Online (Sandbox Code Playgroud)

我错了

$ echo "xxx" > mymemo.txt
Run Code Online (Sandbox Code Playgroud)

导致备忘录丢失mymemo.txt.

我想知道是否有办法禁止使用重定向(>),但允许使用重定向(>>)?

bash

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

二进制文件中cut和dd的结果不同

我的环境:

CentOS 6.5
Run Code Online (Sandbox Code Playgroud)

我需要提取ELF文件的一些部分.

当我使用dd如下命令时,我没有问题:

$dd if=a.out of=a.cut1 bs=1 skip=16    
Run Code Online (Sandbox Code Playgroud)

另一方面,当我cut按如下方式使用命令时,创建的文件的大小比我预期的要小得多:

$cut --bytes=16- a.out > a.cut2
Run Code Online (Sandbox Code Playgroud)


例如,我通过使用gcc(v.4.4.7)编译以下示例c程序来创建a.out:

#include <stdio.h>

int main()
{
    printf("Hello world\n");
}
Run Code Online (Sandbox Code Playgroud)

然后,我按上述执行ddcut命令,我有以下大小的文件:

a.out - 6415 bytes
a.cut1 - 6399 bytes
a.cut2 - 6356 bytes
Run Code Online (Sandbox Code Playgroud)

我想知道为什么cut命令减小了比我指定的更多的大小.

linux cut binaryfiles dd elf

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

32位浮动分区并不像我预期的那么慢

我的环境:

  • Xilinx Zynq(基于ARM Cortex A9)
  • PetaLinux V2014.2

我正在使用PetaLinux在Zynq上开发Linux应用程序.

我目前的问题是四个算术运算的处理时间(+/ - /*/div).

clock_gettime()使用以下代码计算处理时间.

添加(+):

static void funcToBeTimed_floatAdd(void)
{
    int idx;
    float fval = 0.0;
    for(idx=0; idx<100; idx++) {
        fval = fval + 3.14;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于部门(/):

static void funcToBeTimed_floatDiv(void)
{
    int idx;
    float fval = 314159000.00;
    for(idx=0; idx<100; idx++) {
        fval = fval / 1.001;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于时间测量,使用以下代码.在procNo使用设置main(int argc, char *argv[])

static void disp_elapsed(int procNo)
{
    struct timespec tp1, tp2;
    long dsec, dnsec;

    /***/
    switch(procNo) { …
Run Code Online (Sandbox Code Playgroud)

c linux floating-point performance arm

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

std :: vector> v.erase(&v [1]); 未找到

要从矢量中删除元素,我们可以使用

v.erase(v.begin() + 1); // remove 2nd 
Run Code Online (Sandbox Code Playgroud)

此外,我在本网站(SO)的一些帖子中找到了如下句子(例如这个).

v.erase(&v[1]); 
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用第二句时,编译器说"错误:没有用于调用std :: vector的匹配函数"...

http://ideone.com/UZJaEK

第二句只能在某些有限的环境中使用吗?

c++ vector

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