高亮部分怎么了?

msg198734 2009-02-17 02:45:45
#include <string>
#include <fstream>
#include <iostream>

using namespace std;

void main(void){

string line,sentence, sentence_append;
ifstream infilestream("data.txt"); //File object.
char end_of_sentence[3]={'.','?','!'}; //End Mark.
int position_end=0, position_start=0; // The position which could copy to the sentence.
int sentence_size=0, append_mark; //If it needs append, append=1;
bool appendmark=0;

//cout<<"Please input a file name"<<endl;
//cin>>filename;




while (!infilestream.eof()){
getline(infilestream,line);
position_end=0;
position_start=0;
string sentence_append;

do{
position_end=line.find_first_of(end_of_sentence, position_start);

//Count the size of sentence
if(position_start==0 && position_end!=string::npos)
sentence_size=position_end;

else if (position_start!=0 && position_end!=string::npos)
sentence_size=position_end-position_start;

else if(position_start!=0 && position_end==string::npos)
sentence_size=line.length()-position_start;

else
sentence_size=line.length();


//Create the sentence
if(position_end!=string::npos && appendmark==false){

line.copy(sentence,sentence_size, position_start);
}

else if(position_end==string::npos && appendmark==false){
line.copy(sentence,sentence_size, position_start);
appendmark=true;

}

else if(position_end!=string::npos && appendmark==true){
line.copy(sentence_append, sentence_size,position_start);
sentence.append(sentence_append);
appendmark=false;
}

else if(position_end==string::npos && appendmark==true){
line.copy(sentence_append, sentence_size,position_start);
sentence.append(sentence_append);
}

position_start=position_end;

}while(position_end!=string::npos);
cout<<sentence<<endl;

}
infilestream.close();

}
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_rockboy 2009-02-17
  • 打赏
  • 举报
回复
line.copy(sentence,sentence_size, position_start);
line.copy(sentence_append, sentence_size,position_start);

sentence和sentence_append没申请可用内存呢,向里面写东西肯定失败,而且在VS2008下根本编译不过去。
使用
sentence.resize(sentence_size)
line.copy(sentence,sentence_size, position_start);

sentence_append.resize(sentence_size)
line.copy(sentence_append, sentence_size,position_start);
msg198734 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 a_rockboy 的回复:]
拷贝之前
sentence.resize(sentence_size)
sentence_append.resize(sentence_size)
初始化一下
[/Quote]

什么意思啊?
a_rockboy 2009-02-17
  • 打赏
  • 举报
回复
拷贝之前
sentence.resize(sentence_size)
sentence_append.resize(sentence_size)
初始化一下
msg198734 2009-02-17
  • 打赏
  • 举报
回复
为什么运行之后就报错 ?
应该怎么改?
望各位不吝赐教~

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧