无法将char转换为int吗?

时间:2020-05-25 01:56:59

标签: c++ string vector stringstream

我无法将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];

3 个答案:

答案 0 :(得分:5)

datavector个字符串。

因此,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_MININT_MAX

std::stringstream ss("");

ss << data[1];

ss >> ID;
相关问题