我已经填充了带有数字和字符(*,+,-,/
)的字符串向量。我想将每个数字和字符分配给两个新的向量,int
向量和char
向量。有没有办法将所有内容从字符串转换为所需的数据类型?
答案 0 :(得分:2)
您可以在<sstream>
标题中使用字符串流。
string myString = "123";
stringstream sStream( myString );
int convertedInt;
sStream >> convertedInt.
答案 1 :(得分:0)
包含<sstream>
标题,您可以执行以下操作:
std::vector<std::string> stringVector = /* get data from somewhere */
std::vector<int> intVector;
std::vector<char> charVector;
for (std::vector<std::string>::const_iterator it = stringVector.begin(); it != stringVector.end(); it++)
{
if (it->length() == 0)
continue; // ignore any empty strings
int intValue;
std::istingstream ss(*it);
if (ss >> someValue) // try to parse string as integer
intVector.push_back(someValue); // int parsed successfully
else
charVector.pushBack((*it)[0]);
}
这假设任何无法解析为整数的内容都应该被推入char向量中(因此,234
,100000
和-34
将被放入intVector
,/
,+
等将被放入charVector
)。只推送非整数值的第一个字符,因此,如果您有*hello
或*123
,则只有*
会被放入charVector
。
如果您使用的是C ++ 11,则可以将std::vector<std::string>::const_iterator
与auto
交换,以使其看起来更好。