Пожалуй наиболее часто приходится преобразовывать численные типы в строковые и наоборот, рассмотрим многообразие преобразований.
#include <iostream> // stoi, stol, stoll, stof, stod
using namespace std;
int main(){
string str = "12"; // "12"
int i = stoi(str); // string to int
long L = stol(str); // string to long
long long LL = stoll(str); // string to long long
float f = stof("3.14f"); // string to float
double d = stod("3.14"); // string to double
str = to_string(23); // int to string
str = to_string(3.14f); // float to string
str = to_string(3.14); // double to string
}
Считается дурным тоном, особенно для встраиваемых систем, использовать char или unsigned char в качестве целочисленных типов размером с байт и предпочитают использовать типы int8_t и uint8_t, подобный подход распространяется и на целочисленные типы других размеров (16, 32 и 64 бита).
Для использования целочисленных типов данных (int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t) необходимо подключить С++11 (в make файле или среде разработки) и cstdint (в файле с кодом программы).
QMAKE_CXXFLAGS += -std=c++11
#include <cstdint>
clock_t это long
#include <iostream>
#include <limits>
#include <iomanip>
using namespace std;
#define COUT(Ttype, Tname) cout << left << setw(25) << Tname << "min = " << setw(22) << numeric_limits<Ttype>::min() << "max = " << setw(25) << numeric_limits<Ttype>::max() << sizeof(Ttype) << " byte \n";
#define COUT_CHAR(Ttype, Tname) cout << left << setw(25) << Tname << "min = " << setw(22) << (int)numeric_limits<Ttype>::min() << "max = " << setw(25) << (int)numeric_limits<Ttype>::max() << sizeof(Ttype) << " byte \n";
int main() {
COUT(bool, "bool");
COUT_CHAR(char, "char");
COUT_CHAR(unsigned char, "unsigned char");
COUT(short, "short");
COUT(unsigned short, "unsigned short");
COUT(int, "int");
COUT(unsigned int, "unsigned int");
COUT(long, "long");
COUT(unsigned long, "unsigned long");
COUT(long long, "long long");
COUT(unsigned long long, "unsigned long long");
COUT(float, "float");
COUT(double, "double");
}
/* Вывод в консоль
bool min = 0 max = 1 1 byte
char min = -128 max = 127 1 byte
unsigned char min = 0 max = 255 1 byte
short min = -32768 max = 32767 2 byte
unsigned short min = 0 max = 65535 2 byte
int min = -2147483648 max = 2147483647 4 byte
unsigned int min = 0 max = 4294967295 4 byte
long min = -2147483648 max = 2147483647 4 byte
unsigned long min = 0 max = 4294967295 4 byte
long long min = -9223372036854775808 max = 9223372036854775807 8 byte
unsigned long long min = 0 max = 18446744073709551615 8 byte
float min = 1.17549e-38 max = 3.40282e+38 4 byte
double min = 2.22507e-308 max = 1.79769e+308 8 byte
*/