我们知道从输入流中读取,我们可以使用下面的标准C ++函数
istream& getline (char* s, streamsize n, char delim );
但是我们只能提供一个字节/ char的分隔符。
如果我想使用多个字节的分隔符,该怎么办? 有什么好东西我可以利用,提升?
贝斯茨,
林恩
答案 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;
}