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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 20:12     Выделение последнего слова в строке #1
в текстовом файле содержится инфа об абоненте: Ф.И.О. ,город , улица,номер телефона.
определить по номеру телефона абонента.
т.е нужно прогнать файл до номера после его нужно выделить и записать в переменную но как это сделать я не знаю.
Вопрос: как выделить последнее слово или последний символ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2010, 20:12     Выделение последнего слова в строке
Посмотрите здесь:

C++ Перестановка в строке первого и последнего слова..
C++ Строковый ввод-вывод и считывание последнего слова в строке
C++ Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
C++ Выделение последнего слова из строки
Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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 будет храниться последнее слово
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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;
}
то есть нужно читать файл построчно и проверять последнее слово (лучше такую функцию сделать).
Да, ещё неплохо бы проверять строку на пробелы в конце и удалять их...
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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;
}
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 20:44  [ТС]     Выделение последнего слова в строке #5
а как это в СИ выглядеть должно?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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;
}
KIRASIR
5 / 5 / 0
Регистрация: 24.03.2010
Сообщений: 26
25.03.2010, 21:18  [ТС]     Выделение последнего слова в строке #7
то что как раз и нужно +1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2010, 23:43     Выделение последнего слова в строке
Еще ссылки по теме:

C++ Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву
С++ Задан текст напечатать слова отличные от последнего слова Visual Studio C++
C++ Указать общие символы первого и последнего слова в заданной строке (с использованием множества)

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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;
}
Yandex
Объявления
25.03.2010, 23:43     Выделение последнего слова в строке
Ответ Создать тему
Опции темы

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