2017-08-19 6 views
0

ここに問題があります。私のプログラムは大文字を小文字に変更しません。なぜ私はそれを理解できないのですか?Isupper/tolowerが機能しない

#include <iostream> 
#include <ctype.h> 

using namespace std; 

int main(){ 
    string str="hEhEhehe"; 
    for(int i=0;i<str.size();i++){ 
     if(isupper(str.at(i))) 
      tolower(str.at(i)); 
    } 
    cout << str; 
    return 0; 
} 
+0

'tolower'の戻り値を見てください。 –

+0

文字を変更しないので、小文字の文字を返します。文字は不変です。それは必然的に新しいキャラクターを返す必要があります。 – Carcigenicate

+0

Btw。あなたは、その文字を値で渡しているという事実に気付くことができるので、ポインタで渡すことができなければ関数で変更することはできません。 –

答えて

1

文字列のインデックスに値を戻す必要があります。

if(isupper(str.at(i))) 
     str[i] = tolower(str.at(i)); 
+1

上の文字がASCIIか、少なくとも非負であることを望みましょう。 – Deduplicator

+0

ああ神...................大変ありがとうございます。 –

+1

@Deduplicator私はemojisが小文字であるのが好きです。 – Miket25

関連する問題