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

c++数据结构导引中的小疑点

2012-04-23 
c++数据结构导引中的小问题我在执行这段代码时。文件test3(我在与项目同目录下建立的一个测试文件,里面全是

c++数据结构导引中的小问题
我在执行这段代码时。文件test3(我在与项目同目录下建立的一个测试文件,里面全是乱输入的字符)直接全部被读到了console,而没出现书上的测试结果。

C/C++ code
/************************************************************** *本程序对读自磁盘的一个文件的文件行进行一些基本的文本编辑操作 *在编辑完成后,每一行都被写入到一个新文件当中,这个新文件的名 *字和输入文件的名字一样,但是最后加上一个".out"后缀名 *输入(键盘):文件名,编辑命令 *输出(文件):文本行 *输入(屏幕):编辑命令菜单,未编辑和编辑后的文本行 *输出(文件):编辑过的文本行 *************************************************************/#include <iostream>#include <fstream>#include <string>using namespace std;int main(void){    const char COMMAND_MENU[]=        "Editing commands are: \n"        "L:Determine the length of current line\n"        "P str: Find posotion (counting from 0)of string str\n"        "I str: Insert string str\n"        "D p n: Delete n characters beginning at position p\n"        "R str: Replace substring str with another string\n"        "N :Get next line of text\n"        "Q:Quit editing\n";    string inFileName,           outFileName;    cout<<"enter the name of the input file:";    getline(cin,inFileName);    outFileName=inFileName;    outFileName.append("out");    ifstream inFile(inFileName.data());    ofstream outFile(outFileName.c_str());    if(!inFile.is_open()||!outFile.is_open())    {        cerr<<"error in open files";        exit(-1);    }    cout<<COMMAND_MENU<<endl        <<"enter an editing command following each prompt >\n";    char command;//编辑命令    string line,//被编辑的文本行        str1,str2;//编辑中使用的串    int position,//一个串在文本行中的位置        numChars;//将被删除的字符数    getline(inFile,line);    cout<<line<<endl;    for(;;)    {         if(inFile.eof()) break;//Label A         cout<<'>';         cin>>command;         switch(toupper(command))         {         case 'L':             cout<<"Length ="<<line.length()<<endl;             break;         case 'P':             cin.ignore(1);             getline(cin,str1);             position=line.find(str1);             if(position!=string::npos)                 cout<<"Position is "<<1+position<<endl;             else                 cout<<str1<<"not found\n";             break;         case 'I':             cin.ignore(1);             getline(cin,str1);             cout<<"Insert where?";             cin>>position;             line.insert(position-1,str1);             break;         case 'D':             cin>>position>>numChars;             line.erase(position,numChars);             break;         case 'R':             cin.ignore(1);             getline(cin,str1);             position=line.find(str1);             if(position==string::npos)             {                cout<<str1<<"not found\n";                break;             }             cout<<"With what?";             getline(cin,str2);             line.replace(position,str1.length(),str2);             break;         case 'N':             outFile<<line<<endl;             getline(inFile,line);             cout<<"\n Next line: \n";             break;         case 'Q':             outFile<<line<<endl;             for(;;)             {                 getline(inFile,line);                 if(inFile.eof()) break;                 outFile<<line<<endl;             }             break;         default: cout<<"\n *** Illegal command ***\n";         }// end of switch         if(!inFile.eof())             cout<<line<<endl;    }        cout<<"\n *** Editing complete ***\n";        return 0;}

在没有从console输入命令前,怎么就直接吧文件test3的内容直接输出了。。。原书的测试结果(编辑印在书中)在输入命令前并没有输出文件的内容,请问这是怎么回事?


老感觉逻辑有问题。

[解决办法]
VC++6.0测试没问题

热点排行