c++ primer 3rd 关于文件输入输出···

#include <iostream>
#include <fstream>
#include <string>
using namespace std;


int main()
{
    ofstream outfile ("B:\\out.txt");
    ifstream infile ("B:\\cprogram_test.txt");
    if(!infile)
    {
        cerr << "error:unable to open input file";
        return -1;
    }
    if(!outfile)
    {
        cerr << "error:unable to open output file";
        return -2;
    }
    string word;
    while(infile >> word )
    {
        outfile << word <<' ';
    }
    return 0;

}





我看习题答案中说:
  因为数组名代表常量指针,所以数组之间的赋值就是把一个常量付给另一个常量。

我对这段话觉得不对。不知道大侠们怎么看
 
   
苦海无边

Rank: 7Rank: 7Rank: 7

帖子
14410
主题
911
精华
10
可用积分
10077
专家积分
259
在线时间
6313 小时
注册时间
2006-02-14
最后登录
2013-05-01
论坛徽章:
0
2[报告]
  发表于 2007-10-02 19:05:25  | 只看该作者
因为C中是这样,所以C++中也是这样
A problem well described is a problem half solved!
 
   

Rank: 2

帖子
664
主题
121
精华
0
可用积分
1119
专家积分
0
在线时间
56 小时
注册时间
2006-01-06
最后登录
2011-04-08
论坛徽章:
0
3[报告]
  发表于 2007-10-02 19:10:46  | 只看该作者
我觉得那个书说的没有错啊。你说说你认为不太对的原因。大家探讨一下。
一个新手
 
   

Rank: 3Rank: 3

帖子
1275
主题
20
精华
0
可用积分
3408
专家积分
120
在线时间
70 小时
注册时间
2007-09-23
最后登录
2009-07-22
论坛徽章:
0
4[报告]
  发表于 2007-10-02 19:23:27  | 只看该作者
"因为数组名代表常量指针" 这句话说的没错,数组名和它在内存里的那个地址,
"所以数组之间的赋值就是把一个常量付给另一个常量。" 这半句,我不知道它想说什么.是不是有上下文.

数组之间如何复制?我只会= 和memcpy.
要想成为真正的程序员,我还真要学习几年.
 
   

Rank: 7Rank: 7Rank: 7

帖子
1920
主题
13
精华
6
可用积分
2182
专家积分
28
在线时间
9 小时
注册时间
2004-02-01
最后登录
2010-10-02
论坛徽章:
0
5[报告]
  发表于 2007-10-02 20:27:29  | 只看该作者
原帖由  declare 于 2007-10-2 11:02 发表 
我看习题答案中说:
  因为数组名代表常量指针,所以数组之间的赋值就是把一个常量付给另一个常量。

我对这段话觉得不对。不知道大侠们怎么看


“常量指针”不等同于“常量”,所以后半句显然是不准确的。

C 数组在设计上采取了不保存数组的大小信息,这就导致了在运行时无法从数组对象上获取数组的大小;如果没有数组的大小信息,数组对象的值就无从获得、相应地数组的拷贝操作按照常规(即一般对象的赋值方式)也是不能完成的(这其实是 C 数组如此设计要达到的目的)。

虽然数组对象是一个左值,但是由于缺乏数组对象的大小信息,所以在程序运行时无法获得这个对象的值,当然也就无法直接使用数组的值。然而,C 中的任何对象都是有值属性的,数组对象也应该不能例外——于是就有了这样一条规定:除了作为 sizeof 和 & 运算符的操作数之外,数组转换(转换是一种运算,由编译器自动进行)为指向数组第一个元素的指针,并且不再是一个左值。也就是说,一般情况下的数组代表的是数组第一个元素的地址;其类型也发生了变化——不再是数组类型,而是指针类型。
 
   

Rank: 1

帖子
375
主题
154
精华
0
可用积分
504
专家积分
0
在线时间
40 小时
注册时间
2004-11-08
最后登录
2012-07-21
论坛徽章:
0
6[报告]
  发表于 2007-10-05 23:06:06  | 只看该作者
谢谢楼上的,
  再问一个问题
  const int val=1024;
  const int *const &pi_ref= &val;
  其中第二行,为什么不能是:
const int * &pi_ref= &val;
  我觉得,val是const int,所以&val是const int *,刚好和左边的类型匹配,为什么编译报错呢?
 
   

Rank: 7Rank: 7Rank: 7

帖子
5391
主题
172
精华
2
可用积分
11986
专家积分
10
在线时间
322 小时
注册时间
2005-11-19
最后登录
2013-05-02
论坛徽章:
0
7[报告]
  发表于 2007-10-05 23:41:23  | 只看该作者
原帖由  whyglinux 于 2007-10-2 20:27 发表 


“常量指针”不等同于“常量”,所以后半句显然是不准确的。

C 数组在设计上采取了不保存数组的大小信息,这就导致了在运行时无法从数组对象上获取数组的大小;如果没有数组的大小信息,数组对象的值就无 ...


你的意思是这么做不到或者比较难做到?
 
   

Rank: 7Rank: 7Rank: 7

帖子
5391
主题
172
精华
2
可用积分
11986
专家积分
10
在线时间
322 小时
注册时间
2005-11-19
最后登录
2013-05-02
论坛徽章:
0
8[报告]
  发表于 2007-10-05 23:51:02  | 只看该作者
因为数组名代表常量指针,所以数组之间的赋值就是把一个常量付给另一个常量。

这样好象不能说明为什么,而只是给出了一个理由.就算没错也不充分.不是关键.比如

今天下雨了,为什么去中关村坐车而不是走路的原因被认为是因为走路会被雨淋一样,实际上,虽然这个理由足以说明要坐车,但是真正的原因是因为走路得走5个小时,而坐公交要30分钟.
 
   

Rank: 7Rank: 7Rank: 7

帖子
1920
主题
13
精华
6
可用积分
2182
专家积分
28
在线时间
9 小时
注册时间
2004-02-01
最后登录
2010-10-02
论坛徽章:
0
9[报告]
  发表于 2007-10-06 09:37:39  | 只看该作者
原帖由  declare 于 2007-10-5 23:06 发表 
谢谢楼上的,
  再问一个问题
  const int val=1024;
  const int *const &pi_ref= &val;
  其中第二行,为什么不能是:
const int * &pi_ref= &val;
  我觉得,val是const int,所以&val是const int *, ...


因为 &val 是一个右值。对于右值进行引用的话,只能进行 const 引用。
 
   

Rank: 7Rank: 7Rank: 7

帖子
1920
主题
13
精华
6
可用积分
2182
专家积分
28
在线时间
9 小时
注册时间
2004-02-01
最后登录
2010-10-02
论坛徽章:
0
10[报告]
  发表于 2007-10-06 09:43:43  | 只看该作者
原帖由  flw2 于 2007-10-5 23:41 发表 


你的意思是这么做不到或者比较难做到?


即使程序员做不到的事,编译器也可以做到。然而对数组来说,它在设计上就不保存数组的长度信息,所以无论是对程序员还是编译器在运行时从数组对象本身都得不到其大小信息。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值