27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
1

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

03.03.2013, 13:39. Показов 5001. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть пример которий записаний в 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]="*";

и.т.д

помогите!

зарание спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2013, 13:39
Ответы с готовыми решениями:

Как разбить на лексемы
Не могу понять как разбить на лексемы, помагите если не сложно Вот участок кода: #include...

Разбить строки на отдельные лексемы
Прошу помощи для "особо одаренных")). Учусь на программиста заочно (хотя в договоре вечернее)....

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

Разделить строку типа string на лексемы
Есть строка string, нужно разбить её на лексемы. У меня не получается использовать strtok с типом...

12
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
03.03.2013, 14:10 2
Silvestr1994, strtok разбивает слово на лексемы, только она еще и изменяет саму строку, так что можно сначала скопировать ее а потом использовать)

вот тут есть информация:
http://www.cplusplus.com/reference/cstring/strtok/
0
73 / 73 / 12
Регистрация: 22.01.2013
Сообщений: 231
03.03.2013, 14:17 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;
}
1
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 14:51  [ТС] 4
нужно записать в другой string и ещо нужно работать с класом string C++ не с вектором
0
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 15:04  [ТС] 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 так как написано сверху.
зарание спасибо за понимание)))
0
Helter Skelter
64 / 64 / 19
Регистрация: 19.09.2012
Сообщений: 133
03.03.2013, 15:45 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;
}
1
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 16:21  [ТС] 7
нужно разбить строку без пробелов
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.03.2013, 16:31 8
Смотри пример калькулятора из книги Страуструпа "специального издания"
0
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:14  [ТС] 9
не нашол)))
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.03.2013, 17:19 10
Страуструп "Язык программирование 3-издание" 6.1. Калькулятор стр147
0
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:28  [ТС] 11
нету там разделения на лексеми
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.03.2013, 17:30 12
Учись читать... ну или думать...
0
27 / 27 / 11
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:51  [ТС] 13
извиняюсь но можно код пожалуйста))
0
03.03.2013, 17:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2013, 17:51
Помогаю со студенческими работами здесь

Разделение строки на лексемы с strtok, проверка длины каждой лексемы (выдает ошибку)
я именно вот разделяю строку на лексемы и хочу проверить длину каждой лексемы, потом выполнить...

Посмотрите код! (используя функцию strtok, разбить телефонный номер формата (555) 555-5555, введенный как строку, на лексемы)
Посмотрите код все правильно ли??? Задание звучит так, используя функцию strtok, разбить телефонный...

String-строки. C-строки. Лексемы
Добрый вечер, господа. Начну с задания: &quot;Записать в новую строку слова, которые состоят из тех же...

String разбить на float
Всем привет.Хочу создать консольную программу по нахождению неизвестной переменной - x. Программа...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru