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

строки. что-то тут не так - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder БД ADOQuery и Edit http://www.cyberforum.ru/cpp-beginners/thread312599.html
Доброго времени суток, форумчане! Прошу вашей помощи ибо гугл и яндекс уже прячутся от меня в попытках отыскать решение вопроса... Нужно через запрос(ADOQuery) вывести значение из бд(SQL) в поле Edit. Что делаю я: кидаю адоконекшн, настраиваю, кидаю адоквери, настраиваю конект через адоконекшн, в стрингах пишу Select MAX(Z_ID) as MaxZid from zayavki собственно в обработчике этого поля(к...
C++ Оператор " :: " (Двойное двоеточие) Доброй ночи! Расскажите пожалуйста что нибудь про этот оператор, и чем он отличается от других операторов подобного предназначения, то есть, в чем его особенность. Заранее благодарен.=) http://www.cyberforum.ru/cpp-beginners/thread312587.html
C++ Реестр, кнопка и c++
Народ помгите пожалуйста! Мучаюсь уже несколько дней. Надо сделать чтобы обычной кнопкой на форме менялось значение ключа реестра. Заранее благодарен. P.S Пользуюсь Microsoft Visual Studio 2010
Все случаи использования конструктора копирования C++
приведите пример демонстрирующий необходимость и все случаи использование конструктора копирования. нужна помощь)))) #include <iostream> using namespace std; #include <stdlib.h> class cls { char *str; int dl; public: cls ();
C++ Класс для обработки комплексных чисел http://www.cyberforum.ru/cpp-beginners/thread312575.html
Дана задача написать класс для обработки комплексных чисел(вывод на экран, модуль числа, действия: "+,-,*,/". Готовые коды находил, но почти все не подходят по критериям лабораторной работы. Начал писать сам, вот код: #include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> using namespace std;
C++ Реализация метода Add Доброго времени суток, У меня такой вопрос: не могли бы вы написать пример реализации метода add в классе...заранее спасибо... подробнее

Показать сообщение отдельно
OcbMuHor
Заблокирован

строки. что-то тут не так - C++

04.06.2011, 00:35. Просмотров 1127. Ответов 18
Метки (Все метки)

вот код
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
//Программа удаления из строки символов '0..9'
 
 
#include<iostream> // заголовыочный файл с описаниями функций ввод\вывод
#include<conio.h>  // заголовочный файл для создания текстового интерфейса в режиме MS-DOS
#include <string>  // заголовочный файл для класса string
 
int main()
{
    unsigned short i, k;  // объявление перемнных; беззнаковые целые числа.
    std::string str;      // объявление переменной для хранения строки
    std::cout << "VVEDITE STROKU" << std::endl;  // вывод на экран запроса строки
    std::getline(std::cin, str, '\n');           // ввод строки с клавиатуры
    std::cout << "UDALENIE IZ STROKI SIMVOLOV 0..9" << std::endl;  // без комментариев
    for (i = 0; i < str.size(); i++)  // цикл проверки символов на наличие 0..9
    {
        k = i;
        if (str[k] == 0x30) {str.erase(str.begin() + k); i = i--;} // проверка символов строки на соответствие
        if (str[k] == 0x31) {str.erase(str.begin() + k); i = i--;} // их шестнадцатиричным кодам в таблице ACSII
        if (str[k] == 0x32) {str.erase(str.begin() + k); i = i--;} // и удаление  
        if (str[k] == 0x33) {str.erase(str.begin() + k); i = i--;} // Операция декремента переменной "i" связана 
        if (str[k] == 0x34) {str.erase(str.begin() + k); i = i--;} // со сдвигом символов "влево" на место удаленного
        if (str[k] == 0x35) {str.erase(str.begin() + k); i = i--;} //
        if (str[k] == 0x36) {str.erase(str.begin() + k); i = i--;} //
        if (str[k] == 0x37) {str.erase(str.begin() + k); i = i--;} //
        if (str[k] == 0x38) {str.erase(str.begin() + k); i = i--;} //
        if (str[k] == 0x39) {str.erase(str.begin() + k); i = i--;} //
    }
    k = 0; i = 0;                                                  // обнуление памяти, отведенной переменным   
    std::cout << str <<std::endl;                                  // вывод на экран строки после удаления символов 0..9
    getch();                                                       // ожидание ввода с клавиатуры пользователем
    return 0;
}
Вопрос первый:
Компилятор возмущается тем что неправильно объявлена функция getch(), всё работает, но лучше бы уточнить как правильно.
Вопрос есть второй:
Программа работает, но при наборе символов кириллицей раз через раз влетает сбой и сообщение - индекс строки вне диапазона (string subscript out of range). Это при наборе абракадабры типа "ролукпг90384е3щ4е8г9рагк93за4р3489"
Интересует критика по эстетике и грамматике.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru