Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法将字符转换为int?_C++_String_Vector_Stringstream - Fatal编程技术网

C++ 无法将字符转换为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

我无法将字符转换为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 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;