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

Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать? - C++

Восстановить пароль Регистрация
 
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
22.02.2014, 04:17     Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать? #1
Здравствуйте, подскажите пожалуйста почему данный код игнорирует 1-ый символ и приходится первую букву дублировать ?
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
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    string k;
    int s=0;
 
    while(k!="end"){
                            cout<<"Введите параметр:";
                            cin.ignore();
                            getline(cin,k);
                            if(k!="end"){
                                if(k=="char"){
                                    s=s+ sizeof(char);
                                }else{
                                    if(k=="short int"){
                                        s=s+sizeof(short int);
                                    }else{
                                        if(k=="int"){
                                            s=s+ sizeof(int);
                                        }else{
                                            if(k=="long int"){
                                                s=s+ sizeof(long int);
                                            }else{
                                                if(k=="float"){
                                                    s=s+ sizeof(float);
                                                }else{
                                                    if(k=="double"){
                                                        s=s+ sizeof(double);
                                                    }else{
                                                        cout<<"Ошибка!Такого параметра нет:"<<'\n';
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
    return 0;
}
Добавлено через 1 час 52 минуты
Вероятно, мне стоит уточнить, что я хочу:
Я использую cin.ignore() , чтобы у меня читались строки (long int ,short int ) , т.к без этого программа не читает строку с пробелом, но тут возникает проблема в том, что почему-то при вводе строки, строка теряет первую букву и если ты хочешь, чтобы программа работала, надо продублировать первую букву.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 04:17     Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать?
Посмотрите здесь:

C++ дано слово из чётного количества букв.поменять местами первую и вторую букву третью и четвёртую букву и тд.
Почему у меня в файл записует только первую букву а не все слово C++
C++ Заменить в слове первую букву “A” на символ
поменять в словах первую букву на маленькую C++
C++ Почему работает данный код?
Написать программу, меняющую первую букву каждого слова на эту же букву верхнего регистра C++
В строке удвоить данный символ C++
Перенести первую букву в конец слова C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2014, 08:20     Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать? #2
Цитата Сообщение от Sshh Посмотреть сообщение
Я использую cin.ignore() , чтобы у меня читались строки (long int ,short int ) , т.к без этого программа не читает строку с пробелом,
getline() читает строку с пробелами. При чём здесь cin.ignore()? cin.ignore(), перед getline(), используют, когда в потоке остаётся '\n'. Тут этого нет, поэтому и cin.ignore() не нужен.
Цитата Сообщение от Sshh Посмотреть сообщение
что почему-то при вводе строки, строка теряет первую букву
Потому что cin.ignore() её съедает.
Yandex
Объявления
22.02.2014, 08:20     Почему данный код игнорирует 1-ый символ и приходится первую букву дублировать?
Ответ Создать тему
Опции темы

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