无法将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_MIN
或 INT_MAX
。
std::stringstream ss("");
ss << data[1];
ss >> ID;
【讨论】:
【参考方案3】:您想解析string
并使用std::stoi()
之类的函数将其转换为int
。您不能使用演员表来做到这一点。
【讨论】:
以上是关于无法将char转换为int?的主要内容,如果未能解决你的问题,请参考以下文章
Arduino 串行返回奇怪的数字 + 无法将 char 数组转换为 int C++
无法将字符串转换为 const char/string* 到 int*
无法将参数'2'的'char *(*)[6]'转换为'char ***'为'void prac(int *,char ***)'(代码片