C ++の内部動作についてさらに学ぶために、私は独自の文字列クラスを作成することにしました。しかし、私は.toUpper()
と.toLower()
機能に固執しています。これが私のコードです。
Text& toUpper(){
char* c = this->str;
while(*c != 0, c++){
if((*c >= 'a') && (*c <= 'z')){
*c = *c - 32;
std::cout << *c << std::endl;
}
}
return *this;
}
セグメンテーション違反の原因となるラインを分離しましたが、*c = *c - 32
なぜこれが問題を引き起こすのかわかりません。試し(char)(*c - 32)
ましたが、うまくいきませんでした。また、何も出力されないため、これは境界の問題ではありません。何か案は?
更新:私のコンストラクター
Text(char* str){
this->str = str;
this->updateLength(); // glorified strlen
}
私のポインタの定義
private:
char* str;
int len;