Форум программистов, компьютерный форум CyberForum.ru

istringstream должен работать всего один раз? - C++

Восстановить пароль Регистрация
 
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
09.04.2012, 13:02     istringstream должен работать всего один раз? #1
Вот простейший код. Кто-нибудь может объяснить почему переменная b здесь остаётся равной нулю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main( int argc, char *argv[] )
{
   istringstream strStream;
   long a = 0, b = 0;
   
   strStream.str( "123" );
   cout << "strStream.str() = " << strStream.str() << endl; // выводит 123
   strStream >> a;
   cout << "a = " << a << endl; // выводит 123
   
   strStream.str( "456" );
   cout << "strStream.str() = " << strStream.str() << endl; // выводит 456
   strStream >> b;
   cout << "b = " << b << endl; // выводит 0
   
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 13:02     istringstream должен работать всего один раз?
Посмотрите здесь:

C++ Вывести числа, которые встречаются в массиве несколько раз / один раз
C++ Описание istringstream
Описать абстрактный класс породить от него еще два,один должен остаться абстрактным,другой должен быть способен пораждать объекты C++
Реализовать систему плагинов (модулей), каждый из которых должен работать в отдельном потоке C++
C++ Getline and istringstream
Ostringstream и istringstream C++
C++ Вычислить значение функции y для x=a(h)b - получается всего один результат
C++ Описание функции istringstream

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.04.2012, 13:22     istringstream должен работать всего один раз? #2
Buckstabue,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main( int argc, char *argv[] )
{
   istringstream strStream;
   long a = 0, b = 0;
   
   strStream.str( "123" );
   cout << "strStream.str() = " << strStream.str() << endl; // выводит 123
   strStream >> a;
   cout << "a = " << a << endl; // выводит 123
   strStream.clear();
   
   strStream.str( "456" );
   cout << "strStream.str() = " << strStream.str() << endl; // выводит 456
   strStream >> b;
   cout << "b = " << b << endl; // выводит 0
   
   return 0;
}
Добавлено через 4 минуты
Объяснение - устанавливается флаг eof. Пока мы не сделаем clear флаг будет eof.
Yandex
Объявления
09.04.2012, 13:22     istringstream должен работать всего один раз?
Ответ Создать тему
Опции темы

Текущее время: 04:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru