簡體   English   中英

轉換矢量 <string> * char到int

[英]Convert vector<string> * char to int

我需要以下代碼中的幫助,希望您能幫助我完成。 我想要的只是將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;
}

//主要()

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&)'

有很多方法可以將字符串轉換為int。 boost :: lexical_cast是一個神奇地進行你想要的轉換的人。 否則你可以使用atoi(如果你不關心錯誤),或strtol(如果你這樣做)。

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

Delimiter()返回一個vector<string> ,你將其中一個字符串setY() 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]替換它。

如果您使用的是C ++ 11編譯器,函數std::stoi()將起到作用:

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

否則你可以使用舊的atoi()

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

除此之外,您的代碼還有許多其他問題,但我希望您可以自己修復它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM