我正在尝试用C++重新创建一个简单版本的字符串类。我目前在一些函数上遇到了问题,比如substring((函数。
我的私人会员数据包括:
char* chars;
unsigned int size;
我的函数定义在这里:
FunString FunString::substring(unsigned int a, unsigned int b) const {
//return substring from index a to b
//check if substring is in correct bounds
FunString temp;
for (unsigned int i = a; i < b; i++) {
temp.chars[i] = chars[i];
}
return temp;
}
我正试图重新创建经典的子字符串函数,但当我尝试这个时:
int main() {
FunString s = "Hellooooo";
FunString b;
b = s.substring(0,4);
cout << b;
return 0;
}
它输出这个:
Hell└
知道这里发生了什么吗?
问题是您正确地构建了临时字符串,但没有在末尾添加"\0"。然后打印字符串,你就得到了字符串+一些在它后面的东西。
FunString FunString::substring(unsigned int a, unsigned int b) const {
FunString temp;
for (unsigned int i = a; i < b; i++) {
temp.chars[i] = chars[i];
}
temp.chars[b] = ' '; // you should add this line
return temp;
}