使用stringstream将动态大小的字符串转换为int

时间:2013-03-22 23:50:10

标签: c++ gcc std

我正在尝试通过使用stringstream转换用户给定的字符串来向矢量添加int值。用户提供如下数据:1,5,6,7,4所以我永远不会知道将会有多少int。

现在我只收到第一个输入的数字。其余的被忽略了。 这就是我想要的:

stringstream ss;
int tmpInt;
string data;

cout << "Enter data: (1,2,3,4 etc.)";
getline(cin, data);

ss.str(data);

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
}

1 个答案:

答案 0 :(得分:3)

您需要确保ignore逗号:

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
    ss.ignore();
}

目前,提取将尝试读取整数,发现有逗号,并将流保持在失败状态。

或者,如果你想检查字符是否实际上是一个逗号(为了输入验证),你可以这样做:

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
    if (ss.get() != ',') break;
}