2

入力ストリームから読み取ることがわかっているので、以下の標準C++関数を使用できます。

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

ただし、1バイト/文字の区切り文字しか提供できません。

複数バイトで区切り文字を使用したい場合はどうすればよいですか?レバレッジ、ブーストできる素敵なものはありますか?

ベスト、
リン

4

1 に答える 1

1

cin.get()の代わりに使えると思いますcin.getline()。毎回 1 文字を読み取り、区切り文字があるかどうかをテストします。

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;

}

于 2013-02-18T08:34:51.573 に答える