【发布时间】:2021-06-28 05:00:12
【问题描述】:
#include<iostream>
#include<string>
#include<sstream>
#include <typeinfo>
#include<cmath>
#include<vector>
#include <algorithm>
using namespace std;
class Mystring {
char *arr;
public:
Mystring(const char pointer[]) {
int i = 0;
while (pointer[i] != '\0') {
i++;
cout << pointer[i] << endl;
}
arr = new char[i];
i = 0;
while (pointer[i] != '\0') {
arr[i] = pointer[i];
i++;
}
}
friend ostream& operator<<(ostream& out, Mystring& str) {
int i = 0;
while (str.arr[i] != '\0') {
out << str.arr[i];
i++;
}
return out;
}
};
int main() {
Mystring string("Hello, world!");
cout << string << endl;
}
我正在尝试创建自己的字符串类。 “你好世界!”的长度是 13,但 arr 的长度原来是 17。由于某种我不明白的原因,它充满了一些奇怪的字符。当我尝试计算字符串时,它会返回:Hello, world!¤¤¤¤。
【问题讨论】:
-
这一定不是你的问题,但请注意,除了
using namespace std;之外,使用string作为变量名至少会造成混淆。 -
请注意不要在
str.arr[.];中添加\0 -
我认为编译器会自动完成
-
确实有帮助。非常感谢
标签: c++ arrays string pointers char