Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 01:06   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C++: как вырезать 2 символа из строки

Люди добрые, помогите!
Я уже целый вечер воюю со строками, а тут - проблема детская, но я что-то не могу ее решить.
пользователь вводит год (как строку), а мне нужны лишь 2 последние цифры.... Я перелопатила уже половину Интернета, и везде все так загадочно написано, а я что не делаю, все не работает.....
вот что есть (фрагмент кода)
Код:
char year[4], year2[2];
puts("vvedite god rozdenija:");
gets_s (year);
year2=string::substr <year, 2,2>;
не работает((((
помогите написать..и как-нибудь попроще, для начинающих)))

И скажите, а почему он так странно реагирует на размерность символьного массива: вроде в годе 4 цифры, а ему почему-то year[4] очень не нравиться. Я ввожу год из четырех цифр, а он сразу выдает ошибку, мол, буфер слишком мал.......не хватает ему массива в 4 символа, чтобы записать 4 цифры. Если я пишу, скажем, year[10] очень хорошо все кушает.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 05.03.2011, 01:57   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

так попробуйте!
Код:
#include <iostream.h>

int main ()
{
    char year[5], year2[3];
    cin >> year;
    year2[0] = year[2];
    year2[1] = year[3];
    year2[2] = '\0';
    cout << year2 << endl;
    cin.ignore();
    cin.get();
    return 0;
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 05.03.2011, 02:00   #3
Troi666
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 58
По умолчанию

Массив для строки должен быть на один символ больше, чем сама строка, так как последним символом нужно помещать (если используемые функции не делают это самостоятельно) символ '\0'. Он означает конец строки.
Пример: Была строка "Строка". В массиве она запишется так: "Строка\0"
Troi666 вне форума Ответить с цитированием
Старый 05.03.2011, 13:29   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Так-то оно так, но по условию задания мы должны использовать функции, работающие со строками.... вот я и сижу, думаю.... Смотрю на карту строковых функций и идей никаких((((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 05.03.2011, 13:32   #5
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Я поняла...а то я дико удивлялась, почему меня все выбрасывает из программы, если дата в два числа....

Может и строковую функцию подскажите, для того, чтобы 2 последних цифры года вырезать... Глупо было бы просить пользователя ввести год в формате 19-98 и оттуда через "раскол" по дефису доставать.....

Кстати, я для Visual C++ 2008 пишу...для другого компилятора мне не надо, а то еще больше запутаюсь((((((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 05.03.2011 в 14:01.
Blondy вне форума Ответить с цитированием
Старый 05.03.2011, 15:26   #6
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Раз уж речь идет о c++,

#include <iostream>
#include <string>
using namespace std;
void main() {
string s1, s2;
cout<<"Enter year as 4 digits: ";
cin>>s1;
s2=s1.substr(s1.size()-2, 2);
cout<<s2;
}
Son Of Pain вне форума Ответить с цитированием
Старый 05.03.2011, 15:33   #7
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо)))

Сейчас попробуем))))

Только адаптируем под условия... что-то вроде year2=year.substr(year.size()-2,2)


не работает... говорит, что если мы используем .substr, слева от точки должны быть классы, объекты или структуры... мы еще ничего из этого не проходили, зачит substr нам не подходит вообще.....

Какую функцию для работы со строками можно еще для вырезки использовать?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 05.03.2011 в 15:39.
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вырезать часть строки. sergeyrulit Общие вопросы Delphi 2 22.10.2010 22:25
вырезать из строки нужные числа fize Помощь студентам 1 16.12.2009 18:25
Вырезать из строки string слово sasha1993 Общие вопросы Delphi 3 24.07.2009 22:11
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Как из строки получить первые три символа experts91 Помощь студентам 2 07.04.2008 21:58