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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Chernobyl
212 / 212 / 67
Регистрация: 30.09.2012
Сообщений: 542
#1

Как прекратить ввод string? - C++

04.07.2013, 19:13. Просмотров 1355. Ответов 9
Метки нет (Все метки)

Снизу код. Пока прога должна просто напечатать пары имя-возраст,но вопрос в том,как прекратить ввод имен чтобы прога поняла что все,имен больше считывать не надо. Ибо там где числа, то легче,я например вставляю в конце символ | и все,а что со стрингом делать?
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
# include <iostream>
# include <string>
# include <vector>
# include <algorithm>
# include <cmath>
# include <windows.h>
#include <fstream>
using namespace std;
 
int main()
{
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    vector<string> name; 
    vector<int> age;
    string n;
    int a;
    while(cin>>n)
        name.push_back(n);
    while(cin>>a)
        age.push_back(a);
    if(name.size()==age.size()){
    for(int i=0;i<age.size();i++){
        cout<<name[i]<<" - "<<age[i]<<endl;
    }
    }
    else
        cout<<"Эй,человек,ну как же так: "<<name.size()<<" человек(а) и "<<age.size()<<" возроста(ов)?";
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 19:13     Как прекратить ввод string?
Посмотрите здесь:

Как прекратить ввод данных из консоли - C++
Программа должна считывать пары точек (x, y), но заранее не известно количество пар. Как сделать так, чтобы ввод прекратился после ввода...

Циклический алгоритм: прекратить ввод, когда сумма введенных чисел превысит 100 - C++
Вводятся положительные числа. Прекратить ввод, когда сумма введенных чисел превысит 100. Помогите будьте так любезны.

Как организовать проверку на ввод определенных букв переменной string? - C++
Добрый день, не могу организовать проверку на ввод определенных букв переменной string. Необходимо, чтобы в переменную temp записывались...

Как прекратить работу программы? - C++
# include &lt;iostream&gt; # include &lt;locale&gt; using namespace std; int main () { setlocale (LC_ALL,&quot;Russian&quot;); int number; ...

Подскажите как прекратить чтение из файла? - C++
Есть программа: #include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { ifstream cin(&quot;in.txt&quot;); int name; ...

Как по клавише прекратить (приостановить) запись в файл? - C++
Консольное приложение VC6. Есть функция записи в файл. Данные пишутся в цикле: while(i &lt; file_size) { fputs(buffer,file_out); ...

ввод string-а - C++
Как написать во входных данных 2 строки первая с данными а второя пустая ннапишите как написать вторую строку??

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
264 / 186 / 10
Регистрация: 15.01.2011
Сообщений: 668
04.07.2013, 19:20     Как прекратить ввод string? #2
к примеру так:
C++
1
2
3
4
5
6
7
...
if( a == 10 )
{
  std::cout << " ФИНАЛ "<< std::endl;
  break;
}
...
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 19:20     Как прекратить ввод string? #3
Ctrl + Z
Chernobyl
212 / 212 / 67
Регистрация: 30.09.2012
Сообщений: 542
04.07.2013, 19:25  [ТС]     Как прекратить ввод string? #4
Jupiter, Так тоже Страуструп писал,но может я не то просто делаю.Эту комбинацию нужно нажать после всех введеных имен? Если так,то в консоли появляеться ^Z
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.07.2013, 19:27     Как прекратить ввод string? #5
Можно зарезервировать имя, которое будет сигнализировать о том что предыдущее введённое имя последнее, а чтоб разрешить ввод любого возможного имени, специальное должно быть не возможным. Например, если прога предназначена только для русских, то можно за такое имя взять exit, так как не может английское слово, пишущееся прямо латиницей, быть русским именем. Но так не учтёшь транслит и не русских. Поэтому надо взять действительно не возможное. Имя не может состоять из одних пробелов, или быть совсем пустым, вот пустую строку и надо взять за специальное имя.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.07.2013, 20:15     Как прекратить ввод string? #6
Цитата Сообщение от Chernobyl Посмотреть сообщение
Если так,то в консоли появляеться ^Z
именно, но винда же user friendly, потому и Ctrl+Z надо подтверждать ентером
Chernobyl
212 / 212 / 67
Регистрация: 30.09.2012
Сообщений: 542
06.07.2013, 13:51  [ТС]     Как прекратить ввод string? #7
Проблема решена, воспользовался советом taras'а atavin'а и переписал немного код.Окончательно все работает как требуеться. Благодарю всех.

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
# include <iostream>
# include <string>
# include <vector>
# include <algorithm>
# include <cmath>
# include <windows.h>
#include <fstream>
using namespace std;
 
int main()
{
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
        cout<<"Вводите имена"<<endl;
        vector<string> name; 
        string n;
     do {
        cin>>n;
        name.push_back(n);
        }while(n!="end");
    name.pop_back();//удаляем последний элемент,тоесть тот нолик,он нам не нужен
 
    cout<<"Вводите возрасты"<<endl;
    vector<int> age;
    int a;
    do {
        cin>>a;
        age.push_back(a);
       }while(a!=0);
    age.pop_back();//соответственно удаляем то последне слово энд
 
 
    if(name.size()==age.size()){
    for(int i=0;i<age.size();i++){
        cout<<name[i]<<" - "<<age[i]<<endl;
    }
    }
    else
        cout<<"Эй,человек,ну как же так: "<<name.size()<<" человек(а) и "<<age.size()<<" возроста(ов)?"<<endl;
    system("pause");
    return 0;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.07.2013, 00:38     Как прекратить ввод string? #8
Цитата Сообщение от Chernobyl Посмотреть сообщение
воспользовался советом taras'а atavin'а
В коде этого совета не видно:
Цитата Сообщение от taras atavin Посмотреть сообщение
вот пустую строку и надо взять за специальное имя.
Если же воспользовать советом taras atavin, и убрать лишние действия:
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
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Вводите имена" << endl;
    vector <string> name; 
    string n;
    do 
    {
        getline(cin, n);
        if (!n.empty()) name.push_back(n);
        else break;
    } while(true);
    
    cout << "Вводите возрасты" << endl;
    vector <int> age;
    int a;
    do 
    {
        cin >> a;
        if (a) age.push_back(a);
        else break;
    } while(true);
    
    if (name.size() == age.size())
    {
        for(int i = 0; i < age.size(); i++)
            cout << name[i] << " - " << age[i] << endl;
    }
    else
        cout << "Эй, человек, ну как же так: " << name.size() << " человек(а) и " << age.size() << " возроста(ов)?" << endl;
    
    system("pause");
    return 0;
}
Dani
1278 / 636 / 56
Регистрация: 11.08.2011
Сообщений: 2,277
Записей в блоге: 2
Завершенные тесты: 1
07.07.2013, 00:43     Как прекратить ввод string? #9
Цитата Сообщение от Jupiter Посмотреть сообщение
именно, но винда же user friendly
ctrl-с сразу прекращает работу
без френдли
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 21:03     Как прекратить ввод string?
Еще ссылки по теме:

Как задать конец строки и прекратить при вводе определённого символа? - C++
Добрый день! Подскажите, пожалуйста, как задать конец строки при вводе определённого символа. Например, char mass , но при вводе с...

Ввод с клавиатуры в string переменную - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;map&quot; #include &quot;algorithm&quot; int _tmain(int argc, _TCHAR*...

Поэлементный ввод из строки string - C++
Здравствуйте, форумчане. Есть такая проблемка. Имеется файл который состоит из символов и чисел (X456.1) - это координаты. ...

Ввод string после int - C++
Здравствуйте. Нужно ввести int и сразу string через getline. дело в том, что getline считывает сразу в этой же поле или как бы объяснить......

Ввод данных в объект string из потока - C++
Знаю что можно сделать так: #include &lt;strstream&gt; ... char str = &quot;&quot;; ostrstream ostr(str, sizeof(str)); ostr &lt;&lt; 21; ostr &lt;&lt; &quot;:&quot;;...


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

Или воспользуйтесь поиском по форуму:
Chernobyl
212 / 212 / 67
Регистрация: 30.09.2012
Сообщений: 542
07.07.2013, 21:03  [ТС]     Как прекратить ввод string? #10
alsav22, Я имел в виду то, что я последовал тому, что нужно выделить число и слово, которое прекращает ввод. То другое я не смог реализовать, поетому благодарю за код.
Yandex
Объявления
07.07.2013, 21:03     Как прекратить ввод string?
Ответ Создать тему
Опции темы

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