使用 static_cast 将字符串转换为 int 以及将 int 转换为字符串

Conversion of string to int and int to string using static_cast

本文关键字:转换 int 字符串 static cast 使用      更新时间:2023-10-16

我只是无法在C++中转换不同的数据类型。我知道C++是一种强类型语言,所以,我在这里使用了static_cast,但我面临一个错误消息的问题:

从类型"std::string {aka std::basic_string}"到类型"int"的无效static_cast从"int"到"const char*"的转换无效[-允许]

法典

#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;
}

从 int(和反之)制作字符串不是强制转换。

强制转换是获取一种类型的对象并使用它,未经修改,就好像它是另一种类型一样。

字符串是指向至少包含字符数组的复杂结构的指针。

int 是直接表示数值的 CPU 级结构。

出于显示目的,int 可以表示为字符串,但表示需要大量计算。 在给定的平台上,所有整数都使用完全相同的内存量(例如 64 位)。 但是,字符串表示形式可能会有很大差异,对于任何给定的 int 值,都有几种常见的字符串表示形式。

零作为 64 位

平台上的 int,由低电压下的 64 位组成。 作为字符串,它可以用单个字节"0"(位 4 和 5 上的高压,所有其他位上的低电压)、文本"零"、文本"0x0000000000000000"或由于各种原因而存在的任何其他几个约定来表示。然后你会进入使用哪种字符编码方案的问题 - EBCDIC,ASCII,UTF-8,简体中文,UCS-2等。

从字符串确定 int 需要解析器,从 int 生成字符串需要格式化程序。