-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpcast.h
84 lines (67 loc) · 2.22 KB
/
pcast.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef pcast_h
#define pcast_h
#include <sstream>
#include <string>
namespace pcast{
template <typename Input>
Input cast(std::string& value){ // For casting string value to input data type
Input converted_value;
std::stringstream stream;
stream << value;
stream >> converted_value;
return converted_value;
}
template<> // Partial template specification: string
std::string cast(std::string& value){
return value;
}
template<> // Partial template specification: char
char cast(std::string& value){
return value.c_str()[0];
}
template<> // Partial template specification: char
signed char cast(std::string& value){
return (signed char)value.c_str()[0];
}
template<> // Partial template specification: char
unsigned char cast(std::string& value){
return (unsigned char)value.c_str()[0];
}
template<> // Partial template specification: char
const char cast(std::string& value){
return value.c_str()[0];
}
template<> // Partial template specification: char
const signed char cast(std::string& value){
return (signed char)value.c_str()[0];
}
template<> // Partial template specification: char
const unsigned char cast(std::string& value){
return (unsigned char)value.c_str()[0];
}
template<> // Partial template specification: char*
char* cast(std::string& value){
return (char*)value.c_str();
}
template<> // Partial template specification: signed char*
signed char* cast(std::string& value){
return (signed char*)value.c_str();
}
template<> // Partial template specification: unsigned char*
unsigned char* cast(std::string& value){
return (unsigned char*)value.c_str();
}
template<> // Partial template specification: const char*
const char* cast(std::string& value){
return value.c_str();
}
template<> // Partial template specification: const signed char*
const signed char* cast(std::string& value){
return (signed char*)value.c_str();
}
template<> // Partial template specification: const unsigned char*
const unsigned char* cast(std::string& value){
return (unsigned char*)value.c_str();
}
}
#endif