No cpp::daily de hoje vamos falar de assuntos corriqueiros que nos tomam tempo pesquisando na internet e muitas vezes encontramos soluções não tão boas para o que desejamos!
São 5 dicas, mas provavelmente teremos outras partes!
Para saber qual o tipo de variável basta incluir o cabeçalho #include <typeinfo>
usar o tydeid( var ).name()
, exemplo:
#include <iostream>
#include <typeinfo>
int main(){
auto a = 12;
auto b = true;
auto c = 'M';
auto d = 3.14;
std::cout << "Inteiro: " << typeid(a).name() << '\n';
std::cout << "Bool: " << typeid(b).name() << '\n';
std::cout << "Char: " << typeid(c).name() << '\n';
std::cout << "Double: " << typeid(d).name() << '\n';
return 0;
}
Lembrando que a saída será a inicial do nome do tipo, para esse exemplo ficará:
i
de int,d
de double e assim por diante . Para alguns outros tipos você precisará filtrar a informação de saída.
Sabemos obter isso via linha de comando, mas para usar 100% C++ basta incluir a lib #include <X11/Xlib.h>
, nesse exemplo para X.org
#include <iostream>
#include <X11/Xlib.h>
int main(){
Display * d = XOpenDisplay(NULL);
Screen * s = DefaultScreenOfDisplay(d);
std::cout << "Altura/Height da resolução: " << s->height << '\n';
std::cout << "Largura/Width da resolução: " << s->width << '\n';
return 0;
}
Para compilar:
g++ resolucao.cpp -lX11
Se você pesquisar isso no Google vai ver muita solução complexa que vale aquele meme do Khaby Lame .
Mas isso pode ser feito de uma maneira bem simples:
std::string str = {"Lorem Ipsum"};
char * chr = &str[0];
std::cout << "A string str agora é char: " << chr << '\n';
Falando em converter, para converter tipos inteiros para string basta usar a própria STL, isso é muito útil quando estamos desenvolvendo aplicativos gráficos. Exemplos:
#include <iostream>
int main() {
std::string str = {"30"};
std::cout << "Para int: " << std::stoi( str ) + 6 << '\n';
std::cout << "Para float: " << std::stof( str ) + 1.4f << '\n';
std::cout << "Para double: " << std::stod( str ) + 1.89 << '\n';
std::cout << "Para long int: " << std::stol( str ) * 273 << '\n';
std::cout << "Para long long: " << std::stoll( str ) * 3500 << '\n';
std::cout << "Para long double: " << std::stold( str ) * 189.53254 << '\n';
return 0;
}
A gente sabe quem muitas linguagens de programação possuem as funções ltrim()
(remove espaços em branco da esquerda/início), rtrim()
(remove espaços em branco da direita/fim) e trim()
(remove espaços em branco da esquerda/início e da direita/fim) .
Se nós usarmos aquela solução default do algorithm
, provavelmente iremos remover não somente da esquerda e da direita como entre as letras/caracteres também, exemplo:
#include <iostream>
#include <algorithm>
int main(){
std::string str = " texto com espaços em branco ";
str.erase(remove(str.begin(), str.end(), ' '), str.end());
std::cout << "'" << str << "'" << '\n';
return 0;
}
A saída será:
'textocomespaçosembranco'
Então para remover estilo trim()
seria:
#include <iostream>
#include <algorithm>
int main() {
std::string str = " texto com espaços em branco ";
str.erase(str.begin()); // remove no início(esquerda)
str.erase(str.end() - 1); // remove no fim(direita)
std::cout << "'" << str << "'" << '\n';
return 0;
}
A saída será:
'texto com espaços em branco'
Bem, melhor, né?!
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: