DataType Conversions in C++

What is a Data Type Conversions?

In C++, datatype conversion refers to the process of converting a value from one data type to another. C++ is a statically-typed language, meaning that the data type of a variable must be explicitly specified during declaration, and it cannot be changed during the program’s execution.
type conversion in c++ img

What is a Data Type?

In programming, a data type is an attribute that defines the type and size of data that a variable can hold. Each data type has a specific range and set of operations associated with it. C++ supports various fundamental data types, such as integers, floating-point numbers, characters, booleans, and user-defined data types.

Implicit vs. Explicit Conversion

In C++, data type conversion can occur implicitly or explicitly. Implicit conversion, also known as automatic conversion, happens automatically when the compiler converts one data type to another without any programmer intervention.

On the other hand, explicit conversion, also called type casting, requires the programmer to specify the conversion explicitly.

Typecasting in C++

Type casting allows developers to convert a variable of one data type to another. It is particularly useful when we want to avoid data loss during conversion or perform arithmetic operations between different data types. C++ supports two types of typecasting: C-style casting and casting using type conversion operators.

Numeric Data Type Conversions

Integer to Floating-Point Conversions

When we need to convert an integer to a floating-point number, C++ performs an implicit conversion, as long as there is no risk of data loss. For example:

int integerValue = 42;
float floatValue = integerValue; // Implicit conversion

Floating-Point to Integer Conversions

Converting a floating-point number to an integer may result in data loss, as decimals are truncated. In such cases, it’s better to use explicit type casting:

float floatValue = 3.14;
int integerValue = static_cast(floatValue); // Explicit type casting

Integer to Character Conversions

Converting an integer to a character involves mapping the integer value to its corresponding ASCII character. This conversion is usually implicit:

int intValue = 65;
char charValue = intValue; // Implicit conversion: charValue will be 'A'

Char Array to String Conversion

Working with character arrays (C-style strings) in C++ is common, but sometimes we need to convert them to C++ std::string for better manipulation and compatibility with modern C++ code:

char cString[] = "Hello, World!";
std::string cppString = cString; // Implicit conversion

String to Integer Conversion

Converting a string to an integer can be helpful when dealing with user input or reading data from files. C++ provides a few methods to achieve this:

std::string numberString = "42";
int integerValue = std::stoi(numberString); // stoi() function for explicit conversion

String to Floating-Point Conversion

Similarly, converting a string to a floating-point number can be accomplished using the stof() function:

std::string floatString = "3.14";
float floatValue = std::stof(floatString); // stof() function for explicit conversion

Boolean Conversions

C++ allows implicit conversion from numeric values to booleans. Any non-zero value is considered true, and zero is considered false:

int intValue = 42;
bool boolValue = intValue; // boolValue will be true

Type Conversion with User-Defined Data Types

In addition to built-in data types, C++ also supports user-defined data types, such as classes and structures. Type conversion for these data types can be achieved through constructor and operator overloading:

 

class Distance {
public:
    int feet;
    int inches;
    
    // Constructor to convert inches to feet and inches
    Distance(int inches) : feet(inches / 12), inches(inches % 12) {}
    
    // Operator overloading for conversion to integer (inches)
    operator int() const { return feet * 12 + inches; }
};

Usage

Distance d(72); // 72 inches, implicitly converted to Distance object
int totalInches = d; // d implicitly converted to integer (inches)

Best Practices for Data Type Conversion

  • Prefer explicit type casting when there is a risk of data loss.
  • Always check for possible overflow or underflow conditions.
  • Be mindful of the differences between C-style casting and C++-style casting. Use standard library functions like stoi(), stof(), etc., for string conversions.
  • Avoid unnecessary conversions to improve code readability and performance.

Prime Course Trailer

Related Banners

Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Get over 200+ course One Subscription

Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Checkout list of all the video courses in PrepInsta Prime Subscription

Checkout list of all the video courses in PrepInsta Prime Subscription