I need to convert a string in C++ to full upper case. I\'ve been searching for a while and found one way to do it:
#include
#include
You need to put a double colon before toupper:
transform(input.begin(), input.end(), input.begin(), ::toupper);
Explanation:
There are two different toupper functions:
toupper in the global namespace (accessed with ::toupper), which comes from C.
toupper in the std namespace (accessed with std::toupper) which has multiple overloads and thus cannot be simply referenced with a name only. You have to explicitly cast it to a specific function signature in order to be referenced, but the code for getting a function pointer looks ugly: static_cast
Since you're using namespace std, when writing toupper, 2. hides 1. and is thus chosen, according to name resolution rules.