2009-08-29 8 views
0

cygwinでg ++(gcc version 3.4.4)を実行しています。cygwinからSTL std :: transformを使用したときの問題g ++

この小さなコードをコンパイルすることはできません。私は適切なヘッダーを含めました。

int main(){ 

    std::string temp("asgfsgfafgwwffw"); 

    std::transform(temp.begin(), 
        temp.end(), 
        temp.begin(), 
        std::toupper); 

    std::cout << "result:" << temp << std::endl; 

    return 0; 
} 

ベクターなどのSTLコンテナを使用する際に問題はありませんでした。 誰もこの状況についての示唆や洞察を持っていますか?おかげさまで

std::transform(temp.begin(),temp.end(),temp.begin(),static_cast<int (*)(int)>(std::toupper)); 
+0

エラーメッセージも投稿できますか? – avakar

+0

「適切なヘッダー」とは何ですか、どのエラーが表示されていますか?あなたの質問は、「正しいコードを書いていますが、うまくいきません。何が問題なのですか? 私たちは、1)何をしているのか、そして2)そのエラーが何であるかを知る必要があります。 – jalf

+0

この問題(とその解決策)の大きな説明があります[ここ](http://stackoverflow.com/a/7132065/1165522)。 –

答えて

0

This explains it quite well.

#include <cctype> // for toupper 
#include <string> 
#include <algorithm> 
using namespace std; 

void main() 
{ 
string s="hello"; 
transform(s.begin(), s.end(), s.begin(), toupper); 
} 

可哀想名 'のtoupperは' あいまいであるため、上記のプログラムはコンパイルされませ ます。 (右TOUPPERを選択

std::transform(s.begin(), s.end(), s.begin(), 
       (int(*)(int)) toupper); 

これは にコンパイラに指示します: あいまいさを解決するために、明示的なキャストを使用し

int std::toupper(int); // from <cctype> 

または

template <class chart> 
    charT std::toupper(charT, const locale&);// from 
    <locale> 

:それはのいずれかを参照することができます)。

+1

問題をご記入ください。外部の記事が取り下げられた場合、あなたの答えは役に立たなくなります。さらに、あなたの答えが正しいかどうかを知るために、外部のリンクに従わなければならないということは、私たち全員にとって苦痛です。 – jalf

+0

この明白な解決策が見当たらないことをお詫びします。 – Pradyot

2

link aboveから:このコードに煮詰めるます

関連する問題