C ++ iostream使用MULTIPLE字节的分隔符读取

时间:2013-02-18 06:15:58

标签: c++ iostream

我们知道从输入流中读取,我们可以使用下面的标准C ++函数

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

但是我们只能提供一个字节/ char的分隔符。

如果我想使用多个字节的分隔符,该怎么办? 有什么好东西我可以利用,提升?

贝斯茨,
林恩

1 个答案:

答案 0 :(得分:1)

我认为您可以使用cin.get()代替cin.getline()。每次读取一个字符并测试是否出现分隔符。

int main(void){

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;

}