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");
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
:
toupper
en el espacio de nombres global (al que se accede con::toupper
), que proviene de C.toupper
en elstd
nombresstd
(al que se accede constd::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;
}
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;
}