将字符串转换为char和int数据类型

时间:2014-04-28 05:56:31

标签: c++ type-conversion

我已经填充了带有数字和字符(*,+,-,/)的字符串向量。我想将每个数字和字符分配给两个新的向量,int向量和char向量。有没有办法将所有内容从字符串转换为所需的数据类型?

2 个答案:

答案 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向量中(因此,234100000-34将被放入intVector/+等将被放入charVector)。只推送非整数值的第一个字符,因此,如果您有*hello*123,则只有*会被放入charVector

如果您使用的是C ++ 11,则可以将std::vector<std::string>::const_iteratorauto交换,以使其看起来更好。