【问题标题】:conversion of string to int and int to string using static_cast使用 static_cast 将字符串转换为 int 和 int 到字符串
【发布时间】:2016-03-12 04:29:47
【问题描述】:

我只是不能在 c++ 中转换不同的数据类型,我知道 c++ 是一种强类型语言,所以,我 在这里使用static_cast,但我遇到了一个问题,错误消息是

从类型“std::string {aka std::basic_string}”到类型“int”的静态转换无效
从 'int' 到 'const char*' 的无效转换 [-fpermissive]

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

【问题讨论】:

    标签: type-conversion static-cast


    【解决方案1】:

    从 int 生成字符串(反之亦然)不是强制转换。

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 2011-03-06
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多