char数组的索引返回的是ascii值,而不是实际的char



我正在尝试用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;
}

最新更新