Я пытаюсь использовать stringstream с peek() и get (n). Он работает только для первого значения, Name, а затем дает пустые значения для всего, кроме веса, который дает 0 (при печати с помощью cout).Использование stringstream: только для первого значения
stringstream ss;
ss.str("John Smith, Toyota, 160, brown blue, orange");
//Extract into these variables:
string Name = "" ;
string car = "" ;
int weight = 0;
string hairColor = "";
string eyeColor = "";
string favoriteColor = "";
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
Name += temp;
}
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
car += temp;
}
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
weight += temp;
}
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
hairColor += temp;
}
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
eyeColor += temp;
}
while (ss.peek() != ',')
{
char temp;
ss. get(temp);
favoriteColor += temp;
}
cout << "Name is: " << Name << endl;
cout << "car is: " << car << endl;
cout << "weight is: " << weight << endl;
cout << "Hair color is: " << hairColor << endl;
cout << "Eye color is: " << eyeColor << endl;
cout << "Favorite color is: " << favoriteColor << endl;
В чем проблема?
'ss.peek() == '' 'становится верным в конце первого цикла. – 0x499602D2
, так что мне нужно сбросить его на false? как это сделать? – JCoder
Простое решение состоит в том, чтобы поместить 'ss.ignore()' после замыкающей скобки каждого цикла. – 0x499602D2