Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FishZone
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
#1

Ввод данных используя цикл while (cin >> ) - C++

18.05.2017, 02:22. Просмотров 136. Ответов 3
Метки нет (Все метки)

Здравствуйте, не могу разобрать, как работает одна из инструкций данной программы.
Строка с циклом while ( inFile >> str1 )

В данном цикле inFile класса ifstream связан с объектом класса string, откуда в поток передается символьная строка,
содержащаяся в данном объекте, в другой объект класса string, и пока эти данные передаются, выполняются
остальные инструкции.

Я все пытаюсь понять, как работает передача с помощью inFile и >> в цикле while. Символьная строка сразу полностью
выводится в str1 или выводится отдельно каждый символ и после вывода этого символа начинается выполнение инструкций
цикла? Или как-то еще иначе?

Если что, программу взял из книги.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <fstream>
#include <string>
#include <vector>
int main()
{
string fileName; 
cout << "Введите имя файла: ";
cin >> fileName;
 
if ( fileName.empty() ) {
  // странный случай
  cerr << "Пустое имя файла. Завершение работы.\n";
  return -1;
}
 
ifstream inFile( fileName.c_str() );
 
if ( ! inFile ) {
  cerr << "Невозможно открыть файл.\n";
  return -2;
}
 
string str1;
vector< string > text; 
 
while ( inFile >> str1 ) {
  for ( int ix = 0; ix < str1.size(); ++ix )
      if (( char ch = str1[ix] )=='.') {
        ch = '_';
        str1[ix] = ch;
       }
text.push_back( str1 );
}
 
if ( text.empty() )
return 0;
 
vector<string>::iterator iter = text.begin(),
iend = text.end();
 
while ( iter != -iend ) {
  cout << *iter << '\n';
  ++iter;
}
 
return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2017, 02:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод данных используя цикл while (cin >> ) (C++):

Ввод данных используя цикл while (cin >> ) - C++
Здравствуйте, не могу разобрать, как работает одна из инструкций данной программы. Строка с циклом while ( inFile &gt;&gt; str1 ) В данном...

ввод данных cin >> - C++
Приветствую! #include &lt;iostream&gt; using namespace std; int main() {setlocale (LC_ALL,&quot;&quot;); int qt; float...

Ввод данных в структуру - cin.getline - C++
Добрый день, Задача загрузить информацию в структуку Songs (автор, имя, год) . Однако когда в цикле for запрашиваю данные, первый...

Написать, используя цикл for, ввод с клавиатуры 10 чисел - C++
Написать, используя цикл for, ввод с клавиатуры 10 чисел. Цикл может прерваться, если пользователь ввел любое отрицательное число.

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

3
Antikl
с++
204 / 200 / 56
Регистрация: 15.07.2015
Сообщений: 1,061
Завершенные тесты: 6
18.05.2017, 07:36 #2
C++
1
2
3
4
5
6
7
8
while ( !inFile >> str1 ) {
  for ( int ix = 0; ix < str1.size(); ++ix )
      if (( char ch = str1[ix] )=='.') {
        ch = '_';
        str1[ix] = ch;
       }
text.push_back( str1 );
}
0
zss
Модератор
Эксперт С++
6680 / 6242 / 2081
Регистрация: 18.12.2011
Сообщений: 16,305
Завершенные тесты: 1
18.05.2017, 07:52 #3
Antikl, operator>> возвращает ссылку на istream.
Если операция прошла успешно, то при приведении к bool получится истина.
Так что, отрицание здесь не нужно.
1
Antikl
с++
204 / 200 / 56
Регистрация: 15.07.2015
Сообщений: 1,061
Завершенные тесты: 6
18.05.2017, 07:53 #4
Цитата Сообщение от zss Посмотреть сообщение
Так что, отрицание здесь не нужно.
понял
0
18.05.2017, 07:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2017, 07:53
Привет! Вот еще темы с ответами:

Цикл и cin - C++
Здравствуйте. Уже сталкивался с подобной проблемой и никак не могу снова разобраться. При втором проходе цикла в функции add_data()...

цикл while(cin) - C++
когда цикл заканчивается, то cin &gt;&gt; j; не работает. почему? int main() { int c; vector&lt;int&gt; num; while(cin&gt;&gt;c)...

Необходимо не допустить ввод символьных данных, используя механизм исключений - C++
Добрый вечер. Во время выполнения программы возникает необходимость ввести числа с клавиатуры (тип int). В чём собственно вопрос -...

Ввод cin - C++
Я тут раньше задавал подобный вопрос, то тема умерла, по ходу. Здесь приведен листинг функции ввода калькулятора из книги Страуструпа. ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.