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

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

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

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

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

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

C++ Перестановка в строке первого и последнего слова..
C++ Вывести все слова текста, которые отличны от последнего слова, предварительно преобразовав их
C++ Строковый ввод-вывод и считывание последнего слова в строке
C++ Вывести слова данного предложения, которые отличны от последнего слова
C++ Выделение последнего слова из строки
Задан текст, напечатать слова этого текста отличные от последнего слова C++
ООП. Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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++
C++ Указать общие символы первого и последнего слова в заданной строке (с использованием множества)
Напечатать все слова, отличающиеся от последнего слова, в которых буквы упорядочены по алфавиту C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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     Выделение последнего слова в строке
Ответ Создать тему
Опции темы

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