C++ 无法将字符转换为int?
我无法将字符转换为int,我不知道为什么 我只是想将我从CSV解析的一些数据从字符串转换为int,编译器不允许我这样做 我得到这个错误: 从类型“uu gnu_cxx::u alloc_traits::value_type{aka std::u cx11::basic_string}”到类型“int”的强制转换无效 注:我也尝试过:C++ 无法将字符转换为int?,c++,string,vector,stringstream,C++,String,Vector,Stringstream,我无法将字符转换为int,我不知道为什么 我只是想将我从CSV解析的一些数据从字符串转换为int,编译器不允许我这样做 我得到这个错误: 从类型“uu gnu_cxx::u alloc_traits::value_type{aka std::u cx11::basic_string}”到类型“int”的强制转换无效 注:我也尝试过: static_cast<int>(data[2]); 我错过什么了吗?我觉得我已经做了一百万次了 time_t startDate; string I
static_cast<int>(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];
数据是字符串的向量
因此,数据[0]是单个字符串
没有从字符串到int的明确转换
错误消息是正确的
如果您确信字符串是类似于1234的int,那么我建议使用std::stoi。您希望解析字符串并使用类似于std::stoi的函数将其转换为int。您不能使用强制转换来执行此操作。您正在尝试将字符串转换为int,而不是将char转换为int,
要将字符串转换为int,可以使用std::stringstream
如果转换的值超出int数据类型的范围,stringstream将返回int_MIN或int_MAX
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];
std::stringstream ss("");
ss << data[1];
ss >> ID;