| C++ 语言基础(1) |
| 责任编辑:admin 更新日期:2005-8-6 |
重载了六个字节。这个小小错误就擦去了某个内存位置上的六个字节。所以将数据复制到字符数组中时要特别小心。另一个常用的字串函数是sprintf()。这个函数可以混合文本和数字建立格式化字串。下面例子将两个数相加,然后用sprintf()建立字串以报告结果:
char buff[20];
int x = 10 * 20;
sprintf(buff,"The result is: %d",x);
cout << buff;
执行这个码段时,程序显示下列结果:The result is:200
本例中%d告诉sprintf()函数此处有个整型值,格式字串末尾插入变量x,告诉sprintf()在字串的这个位置放上变量x的值。sprintf()是个特别的函数,可以取多个变元。你必须提供目标缓冲区和格式字串,但格式字串后面的变元数是个变量。下面的sprintf()例子用了另外三个变元:
int x = 20;
int y = 5;
sprintf(buff, "%d + %d", x, y, x + y);
cout << buff;
执行这个码段时,屏幕上显示的结果如下:20 + 5 = 25
说明 C++字串中的单斜杠表示特殊字符。例如,'\n'表示新行符,'\t'表示跳表符。为了在字串中放上实际的斜杠,要用双斜杠如下:
strcpy(fileName, "c:\\windows\\system\\win.ini");
许多编程人员因为忘了这个简单的事实而夜不能寐,苦苦折腾。这是个常见的错误,别说我没有告诉你。sprintf()有个兄弟叫wsprintf(),是Windows版的sprintf().Windows程序中可能同时用这两个函数。wsprintf()与sprintf()的作用相似,唯一的差别是不能在格式字串中放上浮点数。C++ Builder程序中两个函数均可使用,但用sprintf()更好,因为它完全支持浮点数(还可以少输入一个字符)。关于sprintf()的进一步介绍,见C++ Builder联机帮助。
字串数组不仅可以有字符数组,还可以有字符数组的数组(即字串数组)。这听起来有点复杂,其实前面的Argstest程序中已经用过。这类数组可以分配如下:
char strings[][20] = {
"This is string 1",
"This is string 2",
"This is string 3",
"This is string 4"};
这个代码生成四个字串的数组,每个字串最多放19个字符。尽管可以使用这种字串数组,但C++ Builder中还有更简单的字串数组处理办法(将在后面介绍C++ Builder时介绍)。说明 如果经常用到字串数组,应当看看标准模板库(STL).STL提供了比用C语言式字符数组更方便地存放和操作字串数组的方法.STL中还有个string类。 |
|