我无法将char
转换为int
,我也不知道为什么。
我只是想将我从CSV解析的一些数据从string
转换为int
,而编译器不会让我这么做。
我收到此错误:
从类型'__gnu_cxx :: __ alloc_traits
>>:value_type {aka std :: __ cxx11 :: basic_string }'到类型' int'
请注意,我也尝试过:
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];
答案 0 :(得分:5)
data
是vector
个字符串。
因此,data[0]
是单个string
。
从"Hello World"
(string
)到int
没有明确的转换。
错误消息是正确的。
如果您确信字符串是 int型(例如"1234"
),那么我建议使用std::stoi()
。
答案 1 :(得分:1)
您想使用string
之类的函数解析int
并将其转换为std::stoi()
。您不能使用演员表来做。
答案 2 :(得分:1)
您正在尝试将string
转换为int
,而不是将char
转换为int
,
要将string
转换为int
,可以使用std::stringstream;
如果转换的值超出了int
数据类型的范围,则stringstream
返回INT_MIN
或INT_MAX
。
std::stringstream ss("");
ss << data[1];
ss >> ID;