将vector <string> * char转换为int </string>

时间:2012-11-15 11:32:40

标签: c++ integer char

我在以下代码中需要帮助,希望您能帮助我完成。我想要的只是将INT类型传递给setX()和setY()。但是,我无法将vector char *转换为int。有替代方案吗?

template<class T>
vector<string> Delimiter(T inputString){
    int count=0;
    char str[inputString.length()];
    strcpy(str,inputString.c_str());
    char * pch;

    vector<string> returnContainer;

    printf ("Splitting string \"%s\" into tokens:\n",str);
    pch = strtok (str,",[]");
    while (pch != NULL)
    {
        returnContainer.push_back(pch);
        pch = strtok (NULL, " ,[]");
        count++;
    }
    for(int i=0; i<returnContainer.size(); i++){
    cout << "return:" << returnContainer[i] << endl;
    }
    return returnContainer;
}

// main()的

fileDataAfterFiltered = Delimiter(fileData[i]); // Delimiter (vector<string> type)

point2DObj[point2DCount].setX(fileDataAfterFiltered[1]); // error
point2DObj[point2DCount].setY(fileDataAfterFiltered[2]); // error

// Assn3.cpp:107:59:错误:没有匹配函数来调用'Point2D :: setX(std :: basic_string&amp;)'

3 个答案:

答案 0 :(得分:1)

有很多方法可以将字符串转换为int。 boost :: lexical_cast是一个神奇地进行你想要的转换的人。否则你可以使用atoi(如果你不关心错误),或strtol(如果你这样做)。

point2DObj[point2DCount].setX(atoi(fileDataAfterFiltered[1].c_str()));
point2DObj[point2DCount].setX(boost::lexical_cast<int>(fileDataAfterFiltered[1]));

答案 1 :(得分:1)

Delimiter()返回vector<string>并将这些字符串中的一个提供给setX()setY(),但两者都需要一个整数参数。您必须将字符串转换为int

int x = atoi(fileDataAfterFiltered[1].c_str());
point2DObj[point2DCount].setX(x);
int y = atoi(fileDataAfterFiltered[2].c_str());
point2DObj[point2DCount].setY(y);

但是:在C ++数组中,向量元素从0 而不是 1开始,因此您可能希望将其替换为fileDataAfterFiltered[0]fileDataAfterFiltered[1]分别

答案 2 :(得分:1)

如果您使用的是C ++ 11编译器,函数std::stoi()将起到作用:

point2DObj[point2DCount].setX(std::stoi(fileDataAfterFiltered[1]));

否则您可以使用旧的atoi()

point2DObj[point2DCount].setX(atoi(fileDataAfterFiltered[1].c_str()));

除此之外,您的代码还有许多其他问题,但我希望您可以自行修复它们。