首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ primer上的一个例子,在VS 2005里 也调不过去,大家给看下解决思路

2012-02-15 
C++ primer上的一个例子,在VS 2005里 也调不过去,大家给看下//6.cpp:定义控制台应用程序的入口点。//#inclu

C++ primer上的一个例子,在VS 2005里 也调不过去,大家给看下
//   6.cpp   :   定义控制台应用程序的入口点。
//

#include   "stdafx.h "


int   _tmain(int   argc,   _TCHAR*   argv[])
{
return   0;
}


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

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

int   main()
{
string   fileName;
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()   );
if(   !inFile)   {
cerr < <   "unable   to   open   file.bailing   out.bye!\n ";
return   -2;
}

string   inBuf;
char   ch;
vector <   string>   text;
while(   inFile   > >   inBuf)
{
for   (   unsigned   int   ix   =0;   ix <inBuf.size();++ix)
              //////////////////////////////////////////////////////////////
////这个地方开始声明的是int   ix   =0;结果编译器反复报错说是警告1warning   C4018:   “ <”:   有符号/无符号不匹配,难道一个string对象的.size()是无符号类型的)////////////////////////////////////

    if(   (ch   =   inBuf[ix]   )   == '. '){
        ch   = '_ ';
        inBuf[ix]   =ch;
}
text.push_back(inBuf);
}
if(text.empty()   )

vector <string>   ::iterator   iter   =text.begin(),   iend   =text.end();

while(   iter   !=iend)
////////这个地方反复报错,说是iter和iend没有声明!)但这地方貌似不涉及作用域的穿透问题/////////////////////////////////////////////

{
cout < <*iter < < '\n ';
++iter;
}
return   0;
}

[解决办法]
.size()的返回类型是sizt_t是一个unsigned int,将unsigned类型和singed类型比较当然会有警告。

if(text.empty() )
vector <string> ::iterator iter =text.begin(), iend =text.end();


如果这里不是你的笔误的话,iter和iend的作用于是在if语句中,所以下面就说没有声明了。

我想是不是应该是这样:

if(text.empty() )
{
vector <string> ::iterator iter =text.begin(), iend =text.end();
while( iter !=iend)
{
cout < <*iter < < '\n ';
++iter;
}
}
[解决办法]
//楼主都是一些简单的语法错误, 掉一些{, }等等. 下面的没有语法错误了:)

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

int main()
{
string fileName;
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() );
if( !inFile) {


cerr < < "unable to open file.bailing out.bye!\n ";
return -2;
}

string inBuf;
char ch;
vector < string> text;
while( inFile > > inBuf)
{
for (unsigned int ix =0; ix <inBuf.size();++ix) {
if( (ch = inBuf[ix] ) == '. '){
ch = '_ ';
inBuf[ix] =ch;
}
text.push_back(inBuf);
}
}

if(!text.empty()) {
vector <string> ::iterator iter =text.begin(), iend =text.end();
while( iter !=iend) {
cout < <*iter < < '\n ';
++iter;
}
}
return 0;
}

热点排行