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

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

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
19.07.2011, 11:23     Из символов в буквы #1
Знаю один из методов защиты от переполнения массива.

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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
19.07.2011, 11:24     Из символов в буквы #2
Циклом for?
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
19.07.2011, 11:25  [ТС]     Из символов в буквы #3
Цитата Сообщение от neske Посмотреть сообщение
Циклом for?
нужно сделать так чтоб пользователь только один раз нажимал интер
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.07.2011, 11:33     Из символов в буквы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
cout << " НЕ ЖМИ ENTER, ПАДЛА !!! << endl;
Добавлено через 45 секунд
или так:
C++
1
cout << "ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER !!!!!!!!!!!" << endl;
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
19.07.2011, 11:36     Из символов в буквы #5
ВВОДИ ДАННЫЕ ЧЕРЕЗ ПРОБЕЛЫ, А НЕ ЧЕРЕЗ ENTER - будь плохим парнем.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
19.07.2011, 12:52     Из символов в буквы #6
Цитата Сообщение от parkito Посмотреть сообщение
нужно сделать так чтоб пользователь только один раз нажимал интер
Вводить данные в строку(std::string) и парсить(std::istringstream). Ну, или следовать советам приведённым выше )
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
19.07.2011, 13:20     Из символов в буквы #8
Можно ввести и без enter'a.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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
Сообщений: 685
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
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
19.07.2011, 14:19     Из символов в буквы #12
Цитата Сообщение от OstapBender Посмотреть сообщение
мне кажется что stream должно инициализироваться пустой строкой
Нет
Цитата Сообщение от OstapBender Посмотреть сообщение
(ведь на этапе компиляции же)
???
Цитата Сообщение от OstapBender Посмотреть сообщение
имхо лучше так делать
Так сделать нельзя, оператор << для входного потока не перегружен
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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++
C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово C++
Найти в массиве символов количество слов, начинающихся с буквы b 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:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru