c++type-conversionstatic-cast

Conversion of string to int and int to string using static_cast


I am just not able to convert different data types in C++. I know that C++ is a strongly-typed language so, I used here static_cast, but I am facing a problem the error messages are:

invalid static_cast from type 'std::string {aka std::basic_string}' to type 'int' invalid conversion from 'int' to 'const char*' [-fpermissive]

Code

#include <vector>
#include <iostream>
using namespace std;

int main()
{
    string time;
    string t2;
    cin >> time;
    int hrs;

    for(int i=0; i!=':'; i++)
    {
       t2[i] = time[i];
    }

    hrs = static_cast<int>(t2);
    hrs = hrs + 12;

    t2 = static_cast<string>(hrs);

    for(int i=0; i!=':'; i++)
    {
       time[i] = t2[i];
    }

    cout << time;

    return 0;
}

Solution

  • Making a string from an int (and the converse) is not a cast.

    A cast is taking an object of one type and using it, unmodified, as if it were another type.

    A string is a pointer to a complex structure including at least an array of characters.

    An int is a CPU-level structure that directly represents a numeric value.

    An int can be expressed as a string for display purposes, but the representation requires significant computation. On a given platform, all ints use exactly the same amount of memory (64 bits for example). However, the string representations can vary significantly, and for any given int value there are several common string representations.

    Zero, as an int on a 64-bit platform, consists of 64 bits at low voltage. As a string, it can be represented with a single byte "0" (high voltage on bits 4 and 5, low voltage on all other bits), the text "zero", the text "0x0000000000000000", or any of several other conventions that exist for various reasons. Then you get into the question of which character encoding scheme is being used - EBCDIC, ASCII, UTF-8, Simplified Chinese, UCS-2, etc.

    Determining the int from a string requires a parser, and producing a string from an int requires a formatter.