CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

C++primer完全抄下来的还编译通不过,在线等待答案。

楼主shaoboailinglijun(邵波爱凌丽君)2006-03-04 08:53:22 在 C/C++ / 新手乐园 提问

#include   <iostream>  
  #include   <fstream>  
  #include   <string>  
  #include   <vector>  
  using   namespace   std;  
  int   main()  
  {       string   fileName;//   #1  
  cout   <<   "Please   enter   name   of   file   to   open:   ";  
  cin   >>   fileName;  
   
  if   (   fileName.empty()   )    
  {  
            //很好,但有一点要说明  
            cerr   <<   "fileName   is   empty.   bailing   out.   bye!\n";  
            return   -1;  
  }  
   
  ifstream   inFile(   fileName.c_str()   );   //   #2  
  if   (   !inFile   )   {  
  cerr   <<   "unable   to   open   file.   bailing   out.   bye!\n";  
            return   -2;  
  }  
   
  string   inBuf;   //   #3                    
  vector<   string   >   text;   //   #4  
   
  while   (   inFile   >>   inBuf   ){  
              for   (int   ix=0;ix<inBuf.size();++ix)//   #5  
      //这里ch并不必需,  
      //但有利于说明  
      if((   char   ch   =   inBuf[ix])   =='.'){//   #6  
        ch   ='_';  
        inBuf[ix]   =   ch;  
      }  
                  text.push_back(   inBuf   );  
  }  
   
  if   (   text.empty()   )  
            return   0;  
   
  //一条声明语句,有2个定义  
  vector<string>::iterator   iter   =   text.begin(),//#7  
                                                      iend   =   text.end();  
  while   (   iter   !=   iend   )    
  {  
                  cout   <<   *iter   <<   '\n';  
                  ++iter;  
  }  
   
  return   0;  
  }  
   
  C++primer中文第三版第五章第一个例题,还出错,编译通不过,高手请指教! 问题点数:20、回复次数:14Top

1 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-04 09:08:57 得分 0

自己顶一下!Top

2 楼zhNKUjw(淡淡的云彩悠悠的游)回复于 2006-03-04 09:20:28 得分 10

if((   char   ch   =   inBuf[ix])   =='.')  
  {//   #6  
        ch   ='_';  
        inBuf[ix]   =   ch;  
  }  
   
  ch定义在if语句中,它的生存期仅为if的条件判断语句((   char   ch   =   inBuf[ix])   =='.'执行时。  
  将其定义到前面即可  
   
  char   ch;  
  while   (   inFile   >>   inBuf   ){  
              for   (int   ix=0;ix<inBuf.size();++ix)//   #5  
      //这里ch并不必需,  
      //但有利于说明  
      if((   ch   =   inBuf[ix])   =='.'){//   #6  
        ch   ='_';  
        inBuf[ix]   =   ch;  
      }  
                  text.push_back(   inBuf   );  
  }  
   
  Top

3 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-04 09:46:04 得分 0

我也是这样想的,但是C++primer上面也有错?Top

4 楼yelling(Ray(←☆→射手))回复于 2006-03-04 09:59:20 得分 0

那个是编译器做不做这种处理的问题,你试一下G++的编译器Top

5 楼njSeeWhy(北海鲲鹏)回复于 2006-03-04 10:29:31 得分 5

ch的生存期应该直到大括号结束,也就是inBuf[ix]=ch之后。因为那样才是一个完整的if语句。楼主把错误信息贴出来看看。Top

6 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-04 10:33:20 得分 0

我用Visual   C++6.0编译的,我自己想ch的生存期出了问题,但是C++primer也有错误吗,完整的C++primer例题。Top

7 楼fhb13(游途道标)回复于 2006-03-04 15:35:04 得分 0

程序不想看   只想看看错误信息  
  楼主不要排除有可能是编译器问题Top

8 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 19:50:59 得分 0

我也是这样想的,但是C++primer上面也有错?  
  ~~~~~~~~~~··  
  如果楼主看的不是原版的书籍,就有可能出错。  
   
  lz还是贴出错误信息吧?Top

9 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-04 21:43:55 得分 0

--------------------Configuration:   5.2   -   Win32   Debug--------------------  
  Compiling...  
  5.2.cpp  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2146:   syntax   error   :   missing   ')'   before   identifier   'ch'  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2065:   'ch'   :   undeclared   identifier  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2106:   '='   :   left   operand   must   be   l-value  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2143:   syntax   error   :   missing   ';'   before   '=='  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2059:   syntax   error   :   ')'  
  C:\Documents   and   Settings\Administrator\桌面\C++primer源代码\第5章   语句\5.2.cpp(31)   :   error   C2143:   syntax   error   :   missing   ';'   before   '{'  
  执行   cl.exe   时出错.  
   
  5.2.obj   -   1   error(s),   0   warning(s)  
  Top

10 楼t_jl1979(骑士)回复于 2006-03-05 14:02:07 得分 5

ch   出了作用域了改为:  
          char   ch   =   inBuf[ix];  
                                              if   (ch   ==   '.'   )   {   //   #6  
                                                          ch   =   '_';  
                                                          inBuf[ix]   =   ch;  
                                              }Top

11 楼shaoboailinglijun(邵波爱凌丽君)回复于 2006-03-05 15:28:45 得分 0

问题是C++primer上也有错误吗?Top

12 楼noOnlyCode(不错,偶就是传说中高数上下册都考80多分的牛逼人物!)回复于 2006-03-05 19:04:47 得分 0

问题是C++primer上也有错误吗?  
   
  //迷信思想,-_-!Top

13 楼wqtl_357(Step By Step!)回复于 2006-03-05 19:22:42 得分 0

#include   <iostream>  
  #include   <fstream>  
  #include   <string>  
  #include   <vector>  
  using   namespace   std;  
   
  int   main()  
  {        
  string   fileName;//   #1  
  cout   <<   "Please   enter   name   of   file   to   open:   ";  
  cin   >>   fileName;  
   
  if   (   fileName.empty()   )    
  {  
  //很好,但有一点要说明  
  cerr   <<   "fileName   is   empty.   bailing   out.   bye!\n";  
  return   -1;  
  }  
   
  ifstream   inFile(   fileName.c_str()   );   //   #2  
  if   (   !inFile   )   {  
  cerr   <<   "unable   to   open   file.   bailing   out.   bye!\n";  
  return   -2;  
  }  
   
  string   inBuf;   //   #3                    
  vector<   string   >   text;   //   #4  
   
  while   (   inFile   >>   inBuf   )  
  {  
  for   (int   ix=0;   ix<inBuf.size();   ++ix)//   #5  
  {  
  char   ch   =   inBuf[ix];  
   
  if(   ch     ==   '.') //   #6  
  {  
  ch   ='_';  
  inBuf[ix]   =   ch;  
  }  
  }  
  text.push_back(   inBuf   );  
  }  
   
  if   (   text.empty()   )  
  return   0;  
   
  //一条声明语句,有2个定义  
  vector<string>::iterator   iter   =   text.begin(),//#7  
  iend   =   text.end();  
  while   (   iter   !=   iend   )    
  {  
  cout   <<   *iter   <<   '\n';  
  ++iter;  
  }  
   
  return   0;  
  }  
   
  把ch的定义改了下。==   的左边必须是个值(而实际上写的是个表达式)Top

14 楼Dugowe(我不是火星人,我家狗狗才是..)回复于 2006-03-05 19:46:52 得分 0

我说一句吧,你用的是那一个编译器,不同的编译器的不同版本运行结果是不同的.  
        c++   primer   应该是最新的标准,我看的是<c++   primer   plus>   可是我曾经用过vc++6.0  
  很多的功能都实现不了,所以建议你用vs.net作练习Top

相关问题

  • C++ Primer中的程序编译报错
  • c编译器
  • primer C++在vc里编译需因一些修改,为什么?
  • 学c++primer用什么编译器???请大家讨论
  • 在C++primer的P894页上,#include "wordcount.h"编译通不过?
  • 求 C++ primer的习题答案集!!!
  • 为何《C++/C试题的答案与评分标准》的String我无法编译?
  • c++编译问题
  • C++编译系统
  • C#的编译器

关键词

  • iend
  • ix
  • iter
  • filename
  • cout
  • include
  • text

得分解答快速导航

  • 帖主:shaoboailinglijun
  • zhNKUjw
  • njSeeWhy
  • t_jl1979

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo