una strupr minusculas minuscula mayusculas mayuscula letra funcion convertir caracteres cadena c++ string uppercase

minusculas - strupr c++



Cómo convertir una cadena de C++ a mayúsculas (6)

Boost algoritmos de cadena:

#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");

Convertir una cadena en C ++ a mayúsculas

Necesito convertir una cadena en C ++ a mayúsculas. He estado buscando por un tiempo y encontré una manera de hacerlo:

#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; }

Desafortunadamente esto no funcionó y recibí este mensaje de error:

función no coincidente para la llamada a ''transform (std :: basic_string :: iterator, std :: basic_string :: iterator, std :: basic_string :: iterator,

He intentado otros métodos que tampoco funcionaron. Esto fue lo más cercano a trabajar.

Así que lo que pregunto es qué estoy haciendo mal. Tal vez mi sintaxis sea mala o necesito incluir algo. No estoy seguro.

Obtuve la mayor parte de mi información aquí: http://www.cplusplus.com/forum/beginner/75634/ (las dos últimas publicaciones)


Es necesario poner dos puntos dobles antes de toupper :

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

Explicación:

Hay dos funciones diferentes de toupper :

  1. toupper en el espacio de nombres global (al que se accede con ::toupper ), que proviene de C.

  2. toupper en el std nombres std (al que se accede con std::toupper ), que tiene múltiples sobrecargas y, por lo tanto, no puede ser referenciado simplemente con un nombre. Tiene que convertirlo explícitamente en una firma de función específica para que se haga referencia, pero el código para obtener el puntero de una función parece feo: static_cast<int (*)(int)>(&std::toupper)

Dado que está using namespace std , al escribir toupper , 2. oculta 1. y, por lo tanto, se elige según las reglas de resolución de nombres.


Podrías hacerlo:

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)); }


Prueba este pequeño programa, directamente de referencia a 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; }

Demo en vivo


También puede utilizar la función del código de abajo para convertirla en mayúsculas.

#include<iostream> #include<cstring> using namespace std; //Function for Converting Lower-Case to Upper-Case void fnConvertUpper(char str[], char* des) { int i; char c[1 + 1]; memset(des, 0, sizeof(des)); //memset the variable before using it. for (i = 0; i <= strlen(str); i++) { memset(c, 0, sizeof(c)); if (str[i] >= 97 && str[i] <= 122) { c[0] = str[i] - 32; // here we are storing the converted value into ''c'' variable, hence we are memseting it inside the for loop, so before storing a new value we are clearing the old value in ''c''. } else { c[0] = str[i]; } strncat(des, &c[0], 1); } } int main() { char str[20]; //Source Variable char des[20]; //Destination Variable //memset the variables before using it so as to clear any values which it contains,it can also be a junk value. memset(str, 0, sizeof(str)); memset(des, 0, sizeof(des)); cout << "Enter the String (Enter First Name) : "; cin >> str; //getting the value from the user and storing it into Source variable. fnConvertUpper(str, des); //Now passing the source variable(which has Lower-Case value) along with destination variable, once the function is successfully executed the destination variable will contain the value in Upper-Case cout << "/nThe String in Uppercase = " << des << "/n"; //now print the destination variable to check the Converted Value. }


#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; }