我的环境是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()使用该函数比使用其他函数更好?
这只是品味问题吗?
我使用"map"尝试了STL示例程序.
#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) 我正在研究安全编码.
在下一页的第二个代码示例中,建议使用(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) 我对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).
我在C++ Builder XE4上工作VCL.
我有以下组件.
FormMain有
FormSelect(或DialogSelect)有
期望的行为
在上面的第3步,我想做:
通过使用对话框,我可以从Modal Result Constans返回一个值. http://docwiki.embarcadero.com/RADStudio/XE5/en/Modal_Result_Constants
但是,当我想从20个或更多项中返回1个值时,如何使用Form/Dialog传递该值?
我的环境是:
GNU coreutils 8.4 有 test 命令来检查文件 using-f选项。
man test 显示
Run Code Online (Sandbox Code Playgroud)-f FILE FILE exists and is a regular file
“常规文件”的定义对我来说是模棱两可的。
在终端上,我做了
$ 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 …
在"C编程语言的JPL机构编码标准"中,我在规则15(第14页)的正下方找到了以下句子:
"这与使用总函数优于非总函数的原则是一致的."
我之前没有听过"全部功能".这是什么?你能给我一些总函数的例子吗?
以下是JPL文档的链接.
我不太确定组合(对象组合)的目的。
在 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)
组合是否用于将大类细分为小类的组合?
是否有任何示例表明与不使用组合时相比,组合是有用的。
我的环境:
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.
我想知道是否有办法禁止使用重定向(>),但允许使用重定向(>>)?
我的环境:
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)
#include <stdio.h>
int main()
{
printf("Hello world\n");
}
Run Code Online (Sandbox Code Playgroud)
然后,我按上述执行dd和cut命令,我有以下大小的文件:
a.out - 6415 bytes
a.cut1 - 6399 bytes
a.cut2 - 6356 bytes
Run Code Online (Sandbox Code Playgroud)
我想知道为什么cut命令减小了比我指定的更多的大小.
我的环境:
我正在使用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) 要从矢量中删除元素,我们可以使用
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的匹配函数"...
第二句只能在某些有限的环境中使用吗?