在读文件时如何区分空格与逗号等符号

alanzhu 2002-12-29 03:51:28
C++用ifstream的对象infile打开一个文件后,用infile>>word得到的一个单词是以空格为标志若是其他标点符号则无效,我该怎么办?
...全文
70 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
alanzhu 2003-01-10
对不起,
vctTagWord是什么啊
回复
Alain_Delone 2002-12-30

建议一个字符段一个字符段读入,这里有个例子
string strLine;
const string delims(" ?\t,.;:!\'\"[{]}<%>-/)(");
int iWordCount=0;
while(getline(cntFile,strLine))
{
string::size_type begIdx,endIdx;

begIdx=strLine.find_first_not_of(delims);

while(begIdx!=string::npos)
{
endIdx=strLine.find_first_of(delims,begIdx);
if(endIdx==string::npos)
{
endIdx=strLine.length();
}

string temp("");
for(int j=begIdx;j<endIdx;++j)
{
temp.append(1,strLine.at(j));
}

cout<<endl<<temp;

++iWordCount;

if(find(vctTagWord.begin(),vctTagWord.end(),temp)==vctTagWord.end())
{
map<string,int>::iterator pos;
pos=mpWord.find(temp);

if(pos!=mpWord.end())
{
++pos->second;
}
else
{
mpWord.insert(make_pair(temp,1));

}

}

begIdx=strLine.find_first_not_of(delims,endIdx);

}
回复
shornmao 2002-12-30
你问这个问题,是因为对英文的排版不了解的缘故,在英文排版中,要求标点符号后面必须用空白和下一个单词分隔,但是标点符号本身可以和前一个单词不分隔。

不过,rushman(一线天)的方法是正解。
回复
rushman 2002-12-29
说明一下:
前面的例子中在输入中加上逗号、空格、回车,看看得到的结果是什么。
回复
whoke 2002-12-29
gz
回复
rushman 2002-12-29
试一下下面的例子。
//-------------------------------------------
char buf[100];

cin.getline(buf,sizeof(buf) - 1,',');
cout<<buf<<endl;
cin.getline(buf,sizeof(buf) - 1,',');
cout<<buf<<endl;
cin.getline(buf,sizeof(buf) - 1,' ');
cout<<buf<<endl;
cin.getline(buf,sizeof(buf) - 1,'\n');
cout<<buf<<endl;
回复
sea_lover 2002-12-29
GetLine()
回复
earthharp 2002-12-29
GetLine();
stroke
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告