0

我正在尝试通过使用 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);
}
4

1 回答 1

3

您需要确保ignore逗号:

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

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

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

while(ss >> tmpInt)
{
    myList.addValue(tmpInt);
    if (ss.get() != ',') break;
}
于 2013-03-22T23:51:28.630 回答