基本上,我正在创建自己的名为MyString的字符串类。在该类中,有一个名为getline的函数,该函数的执行应与'string'类的getline函数完全相同。
但是经过测试,当函数到达空字符或指定的分隔符时,似乎并没有退出循环,而是不断提示输入,并将该输入添加到已经存在的字符串(c字符串)上。
istream& getline (istream& is, MyString& stringC, char delim){
int i = 0;
do{
is.get(stringC.stringM[i]);
i++;
if(i == stringC.Size){
stringC.Grow(1);
}
}while(is.peek() != '\0' || is.peek() != delim);
stringC.stringM[i] = '\0';
return is;
}
此后,我已经解决了我的最后一个问题,但是现在我的主电话仅在我最后一次拨打热线电话后关闭。
cin >> s1;
getline(cin,s2,',');
getline(cin,s3);
//It ends here
cout << "\nNew string values:\n";
cout << "s1 = " << s1 << '\n';
cout << "s2 = " << s2 << '\n';
cout << "s3 = " << s3 << '\n';
cout << "---------------------------\n";
答案 0 :(得分:0)
这是一个逻辑错误:
Matrix<T>
如果is.peek() != '\0' || is.peek() != delim
=='\ 0'is.peek()
delim , then it won't equal
is.peek()(unless is also '\0')
if
,则它将不等于== delim
(再次,除非也是'\ 0')
您正在寻找:
'\0'
如果is.peek() != '\0' && is.peek() != delim
等于is.peek()
或'\0'