[英]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.