Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
#1

Выделение последнего слова в строке - C++

25.03.2010, 20:12. Просмотров 2502. Ответов 7
Метки нет (Все метки)

в текстовом файле содержится инфа об абоненте: Ф.И.О. ,город , улица,номер телефона.
определить по номеру телефона абонента.
т.е нужно прогнать файл до номера после его нужно выделить и записать в переменную но как это сделать я не знаю.
Вопрос: как выделить последнее слово или последний символ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение последнего слова в строке (C++):

Выделение последнего слова из строки - C++
Написать программу выделения последнего слова из введенной строки и отображение его на экране. Языковая среда Borland C++ 3.1, но не...

Выделение последнего слова из введенной строки - C++
Вот задание: написать программу выделения последнего слова из введенной строки и отображение его на экране и чтобы первая половина...

Перестановка в строке первого и последнего слова.. - C++
Всем доброго времени суток!! Появилось вот такое задание написать программу на языке C++ чересстрочного слияния двух текстовых файлов...

Строковый ввод-вывод и считывание последнего слова в строке - C++
Добрый вечер. Возник вопрос по следующей задаче: "1) Скопировать из файла F1 в файл F2 строки, начиная с 4. 2) Подсчитать количество...

Указать общие символы первого и последнего слова в заданной строке (с использованием множества) - C++
Помогите решить задачу с использованием множества: указать общие символы первого и последнего слова в заданной строке.

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву - C++
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...

7
Nameless One
Эксперт С++
5780 / 3429 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.03.2010, 20:26 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include <sstream>
#include <iostream>
 
int main()
{
    //Строка, из которой нужно выделить последнее слово
    std::string str;
    //Строка, в которой будет храниться последнее слово
    std::string lastword;
    std::getline(std::cin, str);
    std::stringstream ss(str);
    while(ss >> lastword);
    std::cout << "The last word in the string is \'" << lastword << "\'" << std::endl;
    system("pause");
    return 0;
}
Суть в том: ты инициализируешь строковый поток строкой, и пока не дойдешь до конца потока, записываешь в переменную отдельное слово из потока. Таким образом, когда дойдешь до конца потока, в переменной lastword будет храниться последнее слово
1
easybudda
Модератор
Эксперт CЭксперт С++
9914 / 5837 / 975
Регистрация: 25.07.2009
Сообщений: 11,006
25.03.2010, 20:27 #3
последнее слово в строке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main(){
    std::string s("Volk, Tambov, Les, 555-1234");
    std::cout << s << std::endl;
    size_t pos = s.find_last_of(' ');
    std::string phone(s.substr(pos + 1));
    std::cout << "Phone: " << phone << std::endl;
 
    return 0;
}
то есть нужно читать файл построчно и проверять последнее слово (лучше такую функцию сделать).
Да, ещё неплохо бы проверять строку на пробелы в конце и удалять их...
1
Nameless One
Эксперт С++
5780 / 3429 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.03.2010, 20:40 #4
Цитата Сообщение от easybudda Посмотреть сообщение
Да, ещё неплохо бы проверять строку на пробелы в конце и удалять их...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
#include <iostream>
 
int main()
{
    //Строка, из которой нужно выделить последнее слово
    std::string str("Volk, Tambov, Les, 555-1234            ");
    //Строка, в которой будет храниться последнее слово
    std::string lastword;
    size_t index;
    //Поиск в обратном направлении
    while((index=str.rfind(" "))==str.size()-1)
        str.erase(index);//Удаление пробела
    lastword=str.substr(index+1);
    std::cout << lastword << std::endl;
    system("pause");
    return 0;
}
0
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 20:44  [ТС] #5
а как это в СИ выглядеть должно?
0
Nameless One
Эксперт С++
5780 / 3429 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
25.03.2010, 21:08 #6
А на C нужно использовать функцию strstr или перебирать символы строки с конца

Добавлено через 20 минут
Вот на С:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
#include <cstdlib>
#include <cstring>
 
int main()
{
    const size_t max=100;
    //Строка, из которой нужно выделить последнее слово
    char str[max]="Volk, Tambov, Les, 555-1234            ";
    //Строка, в которой будет храниться последнее слово
    char lastword[max];
    size_t current_sym=strlen(str)-1;
    //Удаление пробелов с конца
    while(str[current_sym]==' ')
        str[current_sym--]='\0';
    while((str[current_sym]!=' ')&&(current_sym!=0))
        --current_sym;
    strcpy(lastword, str+current_sym+1);
    printf("%s\n", lastword); 
    system("pause");
    return 0;
}
1
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 21:18  [ТС] #7
то что как раз и нужно +1
0
easybudda
Модератор
Эксперт CЭксперт С++
9914 / 5837 / 975
Регистрация: 25.07.2009
Сообщений: 11,006
25.03.2010, 23:43 #8
Цитата Сообщение от Nameless One Посмотреть сообщение
C++
1
2
while((index=str.rfind(" "))==str.size()-1)
str.erase(index);//Удаление пробела
Можно вот так ещё сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
/* удалялка пробелов в конце строки */
int main(){
    std::string s("Volk, Tambov, Les, 555-1234            ");
    size_t pos = s.find_last_not_of(' ');
    if ( pos != s.length() - 1 )
        s.erase(pos + 1);
    std::cout << "\"" << s << "\"" << std::endl;
    return 0;
}
1
25.03.2010, 23:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2010, 23:43
Привет! Вот еще темы с ответами:

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова - C++
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

Дан текст. Выделить из него слова не содержащие букв из последнего слова - C++
Помогите решить) 1.Дан текст. Выделить из него слова не содержащие букв из последнего слова 2. Дан текст. Для каждого слова длина...

С++ Задан текст напечатать слова отличные от последнего слова Visual Studio - C++
Здравствуйте, вопрос такой, я написал программу через функции Её условие заключается в том, что задан текст напечатать все слова...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru