无法将char转换为int?

Posted

技术标签:

【中文标题】无法将char转换为int?【英文标题】:Cannont convert char to 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];

【问题讨论】:

【参考方案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。您不能使用演员表来做到这一点。

【讨论】:

以上是关于无法将char转换为int?的主要内容,如果未能解决你的问题,请参考以下文章

Arduino 串行返回奇怪的数字 + 无法将 char 数组转换为 int C++

vs2013 提示无法从void转换为char

无法将字符串转换为 const char/string* 到 int*

无法将参数'2'的'char *(*)[6]'转换为'char ***'为'void prac(int *,char ***)'(代码片

char *怎样转成int

将带有随机 char 元素的 char[] 转换为一个 int