2016-12-08 14 views
0

文字列を小文字に変換できる高速ポータブル関数が必要でした。調査した後、私はこのコードを思いついたが、残念ながらそれはうまくいきません。std :: stringを小文字に変換する関数

#include <iostream> 
#include <string> 
#include <algorithm> 

using namespace std; 
void low_string(string); 
int main() 
{ 
      string lower = "This is MIX case TEST"; 
      low_string(lower); 
      cout << lower; 
      return 0; 
} 
void low_string(string lower) 
{ 
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower); 
} 

文字列はまだ大文字のままです。私はそれが参照渡しなどで何かをしなければならないと思うが、私が理解できない言語には新しい。どんな助けもありがとうございます。

+0

文字列は参照であり値ではありません。 std :: string&lower –

+1

typoとして閉じる投票。参考までに忘れてしまった。 'void low_string(string lower)' => 'void low_string(string&lower)' – NathanOliver

+0

@NathanOliverうわー!私はエラーの場所を探していた! –

答えて

2

文字列を値渡ししているため、関数内のlowerパラメータは、実際にはlowerのコピーをmainにコピーしています。

void low_string(string& lower)にコードを変更

、それはあなたが、文字列、文字列ではなく、自身のコピーを変更している

2

を動作するはずです。 代わりに参照渡しを考慮する必要があります。

void low_string(string & lower) 
{ 
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower); 
} 
関連する問題