web-dev-qa-db-ja.com

C ++文字列を大文字に変換する方法

C++の文字列を完全に大文字に変換する必要があります。私はしばらく探していて、それを行う方法を見つけました:

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

using namespace std;

int main()
{
    string input;
    cin >> input;

    transform(input.begin(), input.end(), input.begin(), toupper);

    cout << input;
    return 0;
}

残念ながら、これは機能せず、次のエラーメッセージを受け取りました。

'transform(std :: basic_string :: iterator、std :: basic_string :: iterator、std :: basic_string :: iteratorの呼び出しに一致する関数はありません。

私も動作しなかった他の方法を試しました。これが最も作業に近かった。

だから私が求めているのは、私が間違っていることです。たぶん私の構文が悪いか、何かを含める必要があります。私はわかりません。

ほとんどの情報はここにあります: http://www.cplusplus.com/forum/beginner/75634/ (最後の2つの投稿)

17
Thomas W.

toupperの前に二重コロンを置く必要があります。

_transform(input.begin(), input.end(), input.begin(), ::toupper);
_

説明:

2つの異なるtoupper関数があります。

  1. グローバル名前空間(_::toupper_でアクセス)のtoupperは、Cから取得されます。

  2. toupper名前空間(_std::toupper_でアクセス)のstdは、複数のオーバーロードを持っているため、単に名前だけで参照することはできません。参照するには特定の関数シグネチャに明示的にキャストする必要がありますが、関数ポインターを取得するコードは見苦しくなります:static_cast<int (*)(int)>(&std::toupper)

あなたは_using namespace std_であるため、toupperを書き込むとき、2。は1.を隠し、名前解決規則に従って選択されます。

31
leemes

ストリングアルゴリズムのブースト:

#include <boost/algorithm/string.hpp>
#include <string>

std::string str = "Hello World";

boost::to_upper(str);

std::string newstr = boost::to_upper_copy("Hello World");

C++の文字列を大文字に変換する

5

C++リファレンス から直接、この小さなプログラムを試してください

#include <iostream>
#include <algorithm> 
#include <string>  
#include <functional>
#include <cctype>

using namespace std;

int main()
{
    string s;
    cin >> s;
    std::transform(s.begin(), s.end(), s.begin(), std::ptr_fun<int, int>(std::toupper));
    cout << s;
    return 0;

}

ライブデモ

4
yizzlez

できること:

string name = "john doe"; //or just get string from user...
for(int i = 0; i < name.size(); i++) {
    name.at(i) = toupper(name.at(i));
}
1
jordpw
#include <iostream>

using namespace std;

//function for converting string to upper
string stringToUpper(string oString){
   for(int i = 0; i < oString.length(); i++){
       oString[i] = toupper(oString[i]);
    }
    return oString;
}

int main()
{
    //use the function to convert string. No additional variables needed.
    cout << stringToUpper("Hello world!") << endl;
    return 0;
}
0