2013-02-18 41 views
2

我们知道从输入流中读取的定界符读,我们可以使用下面的标准的C++函数C++的iostream具有多个字节

istream& getline (char* s, streamsize n, char delim); 

所述然而,我们只能提供一个字节/焦炭的分隔符。

我应该怎么做,如果我希望使用分隔符多个字节? 是否有任何我可以利用的东西,提升?

最好成绩,
林恩

+1

升压灵将是一种可能性。 – 2013-02-18 06:17:09

+0

@JerryCoffin是的。但只有你有时间。 – 2013-02-18 06:18:12

+0

@JerryCoffin,@MarkGarcia,谢谢你的话!你可以给一个简单的例子使用它吗?我不太喜欢它,谢谢! – Lyn 2013-02-18 06:21:11

回答

1

我认为你可以使用cin.get()而不是cin.getline()。每次读取一个字符并测试是否发生分隔符。

INT主(无效){

string str; 
int length_of_delimiter = 3; 
const char *delimiter = "ABC"; 
char temp = '0'; 
bool over = false; 
cout<<"Enter the stream"<<endl; 

temp = cin.get(); 
int i = 0; 
while(over == false){ 
     for(i = 0; temp == delimiter[i] && i < length_of_delimiter; i++){ 
      str += temp; 
      temp = cin.get(); 
     } 
     if(i == length_of_delimiter){ 
      //chop off the delimiter 
      str.erase(str.end() - length_of_delimiter, str.end()); 
      over = true; 
     } 
     else { 
      str += temp; 
      temp = cin.get(); 
     } 
} 
cout<<"The stream we wanted is: "<<str<<endl; 
return 0; 

}

+0

您需要在每次读取前检查是否有数据,例如'cin.good()'。 – UmNyobe 2013-02-18 09:08:20

+0

@UmNyobe。你是对的。非常感谢。 – 2013-02-18 09:51:05

+0

我同意你的意见,这是我的最终解决方案。 – Lyn 2013-03-07 10:22:59