博文
C++入门 第六章 6.4 字符串与指针(2008-10-08 20:08:00)
摘要:
在C++中可以用3种方法访问一个字符串(在第5章介绍了前两种方法)。
1. 用字符数组存放一个字符串
例6.10 定义一个字符数组并初始化,然后输出其中的字符串。
#include <iostream>
using namespace std;
int main( )
{ char str[]=″I love CHINA!″;
cout<<str<<endl;
return 0;
}
运行时输出:
I love CHINA!
2. 用字符串变量存放字符串
例6.11 定义一个字符串变量并初始化,然后输出其中的字符串。
#include <string>
#include <iostream>
using namespace std;
int main( )
{ string str=″I love CHINA!″;
cout<<str<<endl;
return 0;
}
3. 用字符指针指向一个字符串
例6.12 定义一个字符指针变量并初始化,然后输出它指向的字符串。
#include <iostream>
using namespace std;
int main( )
{ char *str=″I love CHINA!″;
cout<<str<<endl;
return 0;
}
对字符串中字符的存取,可以用下标方法,也可以用指针方法。
例6.13 将字符串str1复制为字符串str2。
定义两个字符数组str1和str2,再设两个指针变量p1和p2,分别指向两个字符数组中的有关字符,通过改变指针变量的值使它们指向字符串中的不同的字符,以实现字符的复制。
#include <iostream>
using namespace std;
int main( )
{ char str1[]=″I love CHINA!″,str2[20],*p1,*p2;
p1=str1;p2=str2;
for(;......
C++入门 第六章 3. 用指向数组的指针作函数参数(2008-10-08 17:47:00)
摘要:
一维数组名可以作为函数参数传递,多维数组名也可作函数参数传递。
例6.9 输出二维数组各元素的值。
题目与例6.7相同,但本题用一个函数实现输出,用多维数组名作函数参数。
#include <iostream>
using namespace std;
int main( )
{ void output(int (*p)[4]); //函数声明
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
output(a); //多维数组名作函数参数
return 0;
}
void output(int (*p)[4]) //形参是指向一维数组的指针变量
{ int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<″ ″;
cout<<endl;
}
运行情况如下:
1 3 5 7 9 11 13 15 17 19 21 23
......
C++ 入门 第6章3. 用指向数组的指针作函数参数(2008-10-07 23:57:00)
摘要:
一维数组名可以作为函数参数传递,多维数组名也可作函数参数传递。
例6.9 输出二维数组各元素的值。
题目与例6.7相同,但本题用一个函数实现输出,用多维数组名作函数参数。
#include <iostream>
using namespace std;
int main( )
{ void output(int (*p)[4]); //函数声明
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
output(a); //多维数组名作函数参数
return 0;
}
void output(int (*p)[4]) //形参是指向一维数组的指针变量
{ int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cout<<*(*(p+i)+j)<<″ ″;
cout<<endl;
}
运行情况如下:
1 3 5 7 9 11 13 15 17 19 21 23
......
C++ 入门 第6章 2. 指向多维数组元素的指针变量(2008-10-07 23:57:00)
摘要:
(1) 指向数组元素的指针变量
例6.7 输出二维数组各元素的值。
这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值。
#include <iostream>
using namespace std;
int main( )
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p; //p是基类型为整型的指针变量
for(p=a[0];p<a[0]+12;p++)
cout<<*p<<″ ″;
cout<<endl;
return 0;
}
运行结果如下:
1 3 5 7 9 11 13 15 17 19 21 23
说明:
① p是指向整型数据的指针变量,在for语句中对p赋初值a[0],也可以写成“p=&a[0][0]”。
② 循环结束的条件是“p<a[0]+12”,只要满足p<a[0]+12,就继续执行循环体。
③ 执行“cout<<*p;”输出p当前所指的列元素的值,然后执行p++,使p指向下一个列元素。
(2) 指向由m个元素组成的一维数组的指针变量
可以定义一个指针变量,它不是指向一个整型元素,而是指向一个包含m个元素的一维数组。这时,如果指针变量p先指向a[0](即p=&a[0]),则p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,见图6.17。
例6.8 输出二维数组任一行任一列元素的值。
#include <iostream>
using namespace std;
int main( )
{ int a......
C++ 入门 第6章6.3.3 多维数组与指针(2008-10-07 23:55:00)
摘要:
用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。
1. 多维数组元素的地址
设有一个二维数组a,它有3行4列。它的定义为
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,18,21,23}};
a是一个数组名。a数组包含3行,即3个元素:a[0],a[1],a[2]。而每一元素又是一个一维数组,它包含4图6.14个元素(即4个列元素),例如,a[0]所代表的一维数组又包含4个元素: a[0][0], a[0][1], a[0][2], a[0][3],见图6.14。可以认为二维数组是“数组的数组”,即数组a是由3个一维数组所组成的。
从二维数组的角度来看,a代表二维数组首元素的地址,现在的首元素不是一个整型变量,而是由4个整型元素所组成的一维数组,因此a代表的是首行的起始地址(即第0行的起始地址,&a[0]),a+1代表a[1]行的首地址,即&a[1]。
a[0],a[1],a[2]既然是一维数组名,而C++又规定了数组名代表数组首元素地址,因此a[0]代表一维数组a[0]中0列元素的地址,即&a[0][0]。a[1]的值是&a[1][0],a[2]的值是&a[2][0]。
0行1列元素的地址可以直接写为&a[0][1],也可以用指针法表示。a[0]为一维数组名,该一维数组中序号为1的元素显然可以用a[0]+1来表示,见图6.16。
欲得到a[0][1]的值,用地址法怎么表示呢?既然a[0]+1是a[0][1]元素的地址,那么,*(a[0]+1) 就是a[0][1]元素的值。而a[0]又是和*(a+0)无条件等价的,因此也可以用*(*(a+0)+1)表示a[0][1]元素的值。依此类推,*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值。
......
js整数排序方法(2008-10-06 12:10:00)
摘要:<html>
<head>
</head>
<body onLoad="clickOpen()">
<script type="text/javascript">
//比较函数
function compareInt(vNum1,vNum2)
{
var iNum1=parseInt(vNum1);
var iNum2=parseInt(vNum2);
if(iNum1<iNum2)
{
return -1;
}
else if(iNum1>iNum2)
{
return 1;
}
else
{
return 0;
}
}
function clickOpen()
{
var arr=[3,32,2,5];
arr.sort(compareInt);
alert(arr.toString());
}
</script>
</body>
</html>......
XQuery FLWOR + HTML(2008-10-05 16:09:00)
摘要:
XML 实例文档
我们将在下面的例子中使用这个 "books.xml" 文档(与上一节中的文件相同)。
在您的浏览器中查看 "books.xml" 文件。
在一个 HTML 列表中提交结果
请看下面的 XQuery FLWOR 表达式:for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
上面的表达式会选取 bookstore 元素下的 book 元素下的所有 title 元素,并以字母顺序返回 title 元素。
现在,我们希望使用 HTML 列表列出我们的书店中所有的书目。我们向 FLWOR 表达式添加 <ul> 和 <li> 标签:<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{$x}</li>
}
</ul>
以上代码的结果:<ul>
<li><title lang="en">Everyday Italian</title></li>
<li><title lang="en">Harry Potter</title></li>
<li><title lang="en">Learning XML</title></li>
<li><title lang="en">XQuery Kick Start</title></li>
</ul>
现在我们希望去除 title 元素,而仅仅显示 title 元素内的数据。<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{data($x)}</li>
}
</ul>
结果将是一个 HTML 列表:<ul>
<li&......
XQuery FLWOR 表达式(2008-10-05 16:05:00)
摘要:
XML 实例文档
我们将在下面的例子中使用这个 "books.xml" 文档(与上一节中的 XML 文件相同)。
在您的浏览器中查看 "books.xml" 文件。
如果使用 FLWOR 从 "books.xml" 选取节点
请看下面这个路径表达式:doc("books.xml")/bookstore/book[price>30]/title
上面这个表达式可选取 bookstore 元素下的 book 元素下所有的 title 元素,并且其中的 price 元素的值必须大于 30。
下面这个 FLWOR 表达式所选取的数据和上面的路径表达式是相同的:for $x in doc("books.xml")/bookstore/book
where $x/price>30
return $x/title
结果是:<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>
通过 FLWOR,您可以对结果进行排序:for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
FLWOR 是 "For, Let, Where, Order by, Return" 的只取首字母缩写。
for 语句把 bookstore 元素下的所有 book 元素提取到名为 $x 的变量中。
where 语句选取了 price 元素值大于 30 的 book 元素。
order by 语句定义了排序次序。将根据 title 元素进行排序。
return 语句规定返回什么内容。在此返回的是 title 元素。
上面的 XQuery 表达式的结果:<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>......
XQuery 实例(2008-10-05 15:52:00)
摘要:本节,让我们通过研究一个例子来学习一些基础的 XQuery 语法。
XML 实例文档
我们将在下面的例子中使用这个 XML 文档。
"books.xml" :<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</boo......
XQuery 简介(2008-10-05 15:49:00)
摘要:
解释XQuery最佳方式是这样讲:XQuery 相对于 XML 的关系,等同于 SQL 相对于数据库表的关系。
XQuery 被设计用来查询 XML 数据 - 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。
您应该具备的基础知识:
在您继续学习之前,需要对下面的知识有基本的了解:
HTML / XHTML
XML / XML 命名空间
XPath
如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。
什么是 XQuery?
XQuery 是用于 XML 数据查询的语言
XQuery 对 XML 的作用类似 SQL 对数据库的作用
XQuery 被构建在 XPath 表达式之上
XQuery 被所有主要的数据库引擎支持(IBM、Oracle、Microsoft等等)
XQuery 是 W3C 标准。
XQuery 和 XML 查询有关
XQuery 是用来从 XML 文档查找和提取元素及属性的语言。
这是一个 XQuery 解决实际问题的例子:
“从存储在名为 cd_catalog.xml 的 XML 文档中的 CD 集那里选取所有价格低于 10 美元的 CD 纪录。”
XQuery 与 XPath
XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符。假如您已经学习了 XPath,那么学习 XQuery 也不会有问题。
您可以在我们的《XPath 教程》中阅读更多有关 XPath 的知识。
XQuery - 应用举例
XQuery 可被用来:
提取信息以便在网络服务中使用
生成摘要报告
把 XML 数据转换为 XHTML
为获得相关信息而搜索网络文档
XQuery 是一个 W3C 推荐标准
XQuery 与多种 W3C 标准相兼容,比如 XML、Namespaces、XSLT、XPath 以及 XML Schema。
XQuery 1.0 在 2007年1月23日 被确立为 W3C 推荐标准。
如需获得更多有关 W3C 的 XQuery 活动的信息,请阅读我们的《W3C 教程》。......