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

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

Войти
Регистрация
Восстановить пароль
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
#1

Из символов в буквы - C++

19.07.2011, 11:23. Просмотров 803. Ответов 16
Метки нет (Все метки)

Знаю один из методов защиты от переполнения массива.

C++
1
2
3
4
5
char str[40];
cout<<"Введите строчку символов --> ";
cin>>setw(40)>>str;
 
}
Мне надо проделать такую же защиту с типом данных
C++
1
int
Примерно должно выглядеть так

C++
1
2
3
int str[40];
cout<<"Введите цифры --> ";
cin>>setw(40)>>str;
Как этого добится ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 11:23     Из символов в буквы
Посмотрите здесь:

C++ Слова, буквы. Вывести последовательность символов.
C++ В последовательности введенных символов (последний '$') определить порядковый номер первой буквы R
C++ Ввести строку символов, если ее длина >15, удалить все буквы - a…z.
Коды символов одной и той же буквы различаются. [help] C++
C++ Составить программу,которая из заданной строки символов выводить буквы по алфавиту
C++ Дана строка из 20 символов. вывести из неё латинские строчные буквы
C++ Определить класс символов (цифры или буквы)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
19.07.2011, 11:24     Из символов в буквы #2
Циклом for?
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
19.07.2011, 11:25  [ТС]     Из символов в буквы #3
Цитата Сообщение от neske Посмотреть сообщение
Циклом for?
нужно сделать так чтоб пользователь только один раз нажимал интер
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.07.2011, 11:33     Из символов в буквы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
cout << " НЕ ЖМИ ENTER, ПАДЛА !!! << endl;
Добавлено через 45 секунд
или так:
C++
1
cout << "ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER !!!!!!!!!!!" << endl;
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
19.07.2011, 11:36     Из символов в буквы #5
ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER - будь плохим парнем.
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
19.07.2011, 12:52     Из символов в буквы #6
Цитата Сообщение от parkito Посмотреть сообщение
нужно сделать так чтоб пользователь только один раз нажимал интер
Вводить данные в строку(std::string) и парсить(std::istringstream). Ну, или следовать советам приведённым выше )
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
19.07.2011, 13:06  [ТС]     Из символов в буквы #7
Ну вот этот массив чтоб заполнить нужны интеры

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<iomanip>
#include <windows.h>
#include <cstring>
using namespace std;
int main ()
{setlocale(LC_ALL,"Rus");
int a[10];
cout<<"Не жми на интер ***ла --> ";
for(int i=0;i<10;i++)
    cin>>a[i];
cout<<'1';
cout<<a;
cin.get();
cin.get();
return 0;
}
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
19.07.2011, 13:20     Из символов в буквы #8
Можно ввести и без enter'a.
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
19.07.2011, 13:33     Из символов в буквы #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
32
33
34
#include <sstream>
#include <iostream>
#include <string>
#include <cstddef>
 
void ReadLnToArr(int array[], std::size_t capacity, std::size_t* new_size)
{
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream(s);
 
    *new_size = 0;
 
    for(std::size_t i = 0; i < capacity; ++i)
    {
        if(stream >> array[i]) ++*new_size;
        else break;
    }
}
 
int main()
{
    const std::size_t a_capacity = 10;
 
    std::size_t a_size = 0;
    int a[a_capacity] = {0};
 
    ReadLnToArr(a, a_capacity, &a_size);
 
    for(std::size_t i = 0; i < a_size; ++i)
        std::cout << a[i] << '\n';
 
    return 0;
}
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
19.07.2011, 13:47  [ТС]     Из символов в буквы #10
Цитата Сообщение от neske Посмотреть сообщение
Можно ввести и без enter'a.
А без пробелов можно ? Нужно просто чтоб ввелась строка и каждая ее цифра поместилась в разные части массива
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.07.2011, 13:48     Из символов в буквы #11
rangerx, млин вот не знаю почему но мне вот это не нравится
C++
1
2
3
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream(s);
мне кажется что stream должно инициализироваться пустой строкой (ведь на этапе компиляции же)
хотя код проверил - работает.
вообщем не знаю ... не доверяю как-то.

имхо лучше так делать:
C++
1
2
3
4
    std::string s;
    std::getline(std::cin, s);
    std::istringstream stream;
stream << s;
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
19.07.2011, 14:19     Из символов в буквы #12
Цитата Сообщение от OstapBender Посмотреть сообщение
мне кажется что stream должно инициализироваться пустой строкой
Нет
Цитата Сообщение от OstapBender Посмотреть сообщение
(ведь на этапе компиляции же)
???
Цитата Сообщение от OstapBender Посмотреть сообщение
имхо лучше так делать
Так сделать нельзя, оператор << для входного потока не перегружен
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
19.07.2011, 14:25     Из символов в буквы #13
Цитата Сообщение от OstapBender Посмотреть сообщение
мне кажется что stream должно инициализироваться пустой строкой (ведь на этапе компиляции же)
Так а какая разница? Будет создан примерно такой код:
C++
1
istringstream(this, s);//где this=&stream
т.е. вызов конструктора, а там уже что он будет делать со строкой s - это его дело))
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
19.07.2011, 14:26     Из символов в буквы #14
Цитата Сообщение от OstapBender Посмотреть сообщение
имхо лучше так делать:
Для этого есть специальный метод str
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.07.2011, 14:57     Из символов в буквы #15
Цитата Сообщение от rangerx Посмотреть сообщение
Так сделать нельзя, оператор << для входного потока не перегружен
да, не заметил что там iss а не просто ss.
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Для этого есть специальный метод str
ето для вывода, а я хотел ввести строку туда

Kastaneda, да, мне почему то взбрело что конструктор вызывается на этапе компиляции, когда строка s еще пустая, типа ошибка наподобие этого:
C++
1
2
3
4
5
6
    int n;
 
    std::cout << "n: ";
    std::cin >> n;
 
    int arr[n];
Kastaneda
19.07.2011, 15:03
  #16

Не по теме:

Цитата Сообщение от OstapBender Посмотреть сообщение
Kastaneda, да, мне почему то взбрело что конструктор вызывается на этапе компиляции
Я как-то интуитивно так и подумал

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 15:08     Из символов в буквы
Еще ссылки по теме:

После каждой 2 Буквы вставлять строку символов MAU C++
Найти в массиве символов количество слов, начинающихся с буквы b C++
C++ Сдвинуть буквы, в каждом слове, влево или вправо, на n символов
В строке, состоящей из алфавитно-цифровых символов, переместить все буквы в ее начало C++
В строке, состоящей из алфавитно-цифровых символов, переместить все буквы в ее начало C++

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
19.07.2011, 15:08     Из символов в буквы #17
Цитата Сообщение от OstapBender Посмотреть сообщение
ето для вывода, а я хотел ввести строку туда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string s("my string");
    std::string t;
    std::istringstream isstr;
 
    isstr.str(s);
 
    isstr >> t;
    std::cout << t << std::endl;
    return 0;
}
Yandex
Объявления
19.07.2011, 15:08     Из символов в буквы
Ответ Создать тему
Опции темы

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