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

String разбить на лексемы - C++

Восстановить пароль Регистрация
 
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 13:39     String разбить на лексемы #1
есть пример которий записаний в string str1=("25+69-65*85/58+65*(12+36)+36") нужно его разбить на лексеми и записать в другой string str2

примерно так:
str2[0]="25";
str2[1]="+";
str2[2]="69";
str2[3]="-";
str2[4]="65";
str2[5]="*";

и.т.д

помогите!

зарание спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
03.03.2013, 14:10     String разбить на лексемы #2
Silvestr1994, strtok разбивает слово на лексемы, только она еще и изменяет саму строку, так что можно сначала скопировать ее а потом использовать)

вот тут есть информация:
http://www.cplusplus.com/reference/cstring/strtok/
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
03.03.2013, 14:17     String разбить на лексемы #3
Можно таким образом разбить строку на лексемы. Создать два вектора для хранения цифр и операций, а затем просто добавить их в string str2 соответствующем порядке.
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int main()
{
    string str = "25+69-65*85/58+65*(12+36)+36";
    char* S = new char[str.length()+1];
    strcpy(S,str.c_str());
    char* ptr = strtok(S,"+-*/()");
    vector<string> digit;
    
    do{
 
        digit.push_back(ptr);
    }while(ptr = strtok(NULL,"+-*/()"));
    
    for(int i=0;i<digit.size();i++)
        cout<<digit[i]<<endl;
    delete [] S;
    system("pause");
    return 0;
}
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 14:51  [ТС]     String разбить на лексемы #4
нужно записать в другой string и ещо нужно работать с класом string C++ не с вектором
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 15:04  [ТС]     String разбить на лексемы #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <iostream>
 
using namespace std;
 
int main()
{
    string str1=("25+96-89*45/85*96*(25+36-456)*8");
    string str2;
    //нужно str1 разбить на лексеми и записать в str2 таким образом : 
    /*
    str2[0] = "25";
    str2[1] = "+";
    str2[2] = "96";
    str2[3] = "-";
    str2[4] = "89";
    str2[5] = "*";
    str2[6] = "45";
    и.т.д
    */
}
я извиняюсь за настойчивость но мне нужно разбить на лексеми string str1 и записать в string str2 так как написано сверху.
зарание спасибо за понимание)))
hofmn
Helter Skelter
 Аватар для hofmn
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
03.03.2013, 15:45     String разбить на лексемы #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main () 
{
  int i = 0;
  string str1 ("25 + 96 - 89 * 45 / 85 * 96 * ( 25 + 36 - 456 ) * 8");
  string* str2;
  istringstream iss (str1, istringstream :: in);
  
  str2 = new string [str1.size()];
  
  while (iss)
  {  
    iss >> str2[i++];
  }
  
  cout << str2[1] << endl << str2[7] << endl << str2[13];
  
  return 0;
}
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 16:21  [ТС]     String разбить на лексемы #7
нужно разбить строку без пробелов
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
03.03.2013, 16:31     String разбить на лексемы #8
Смотри пример калькулятора из книги Страуструпа "специального издания"
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:14  [ТС]     String разбить на лексемы #9
не нашол)))
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
03.03.2013, 17:19     String разбить на лексемы #10
Страуструп "Язык программирование 3-издание" 6.1. Калькулятор стр147
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:28  [ТС]     String разбить на лексемы #11
нету там разделения на лексеми
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
03.03.2013, 17:30     String разбить на лексемы #12
Учись читать... ну или думать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2013, 17:51     String разбить на лексемы
Еще ссылки по теме:

Разделить строку типа string на лексемы C++
C++ String-строки. C-строки. Лексемы

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

Или воспользуйтесь поиском по форуму:
Silvestr1994
 Аватар для Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:51  [ТС]     String разбить на лексемы #13
извиняюсь но можно код пожалуйста))
Yandex
Объявления
03.03.2013, 17:51     String разбить на лексемы
Ответ Создать тему
Опции темы

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