【问题标题】:Cannont convert char to int?无法将char转换为int?
【发布时间】:2020-05-25 01:56:59
【问题描述】:

我无法将char 转换为int,我也不知道为什么。

我只是想将我从 CSV 解析的一些数据从 string 转换为 int,而编译器不会让我这样做。

我收到此错误:

从类型 '__gnu_cxx::__alloc_traits<:allocator> >::value_type {aka std::__cxx11::basic_string}' 到类型 ' 的无效转换诠释'

注意我也试过了:

static_cast<int>(data[2]);

甚至

'a' - data[2];

我错过了什么吗?我觉得我已经这样做了一百万次了。

time_t startDate;
string ID;
int beds;
int numDays;
string token;
vector<string> data;

for(int i = 0; i < 2; i++){ // run through the rest of the file
    getline(customers, line);
    stringstream s(line); // to parse the csv

    while(getline(s,token, ',')){
        data.push_back(token);
    }

    startDate = changeToInt(data[0]);
    ID = data[1];
    ---> beds = (int)data[2];
    ---> numDays = (int)data[3];

【问题讨论】:

    标签: c++ string vector stringstream


    【解决方案1】:

    data 是字符串的vector

    因此data[0] 是单个string

    没有从"Hello World"string)到int的明确转换。

    错误信息是正确的。

    如果你确信字符串是 int-like(例如"1234"),那么我推荐std::stoi()

    【讨论】:

      【解决方案2】:

      您正在尝试将string 转换为int,而不是将char 转换为int, 要将string 转换为int,可以使用std::stringstream;

      如果转换的值超出 int 数据类型的范围,stringstream 返回 INT_MININT_MAX

      std::stringstream ss("");
      
      ss << data[1];
      
      ss >> ID;
      

      【讨论】:

        【解决方案3】:

        您想解析string 并使用std::stoi() 之类的函数将其转换为int。您不能使用演员表来做到这一点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-31
          • 2012-10-19
          • 2011-07-03
          • 2015-01-21
          • 2012-08-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多