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

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

Войти
Регистрация
Восстановить пароль
 
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
#1

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

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

есть пример которий записаний в 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2013, 13:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос String разбить на лексемы (C++):

Как разбить на лексемы - C++
Не могу понять как разбить на лексемы, помагите если не сложно Вот участок кода: #include <iostream> #include <locale.h> #include...

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

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

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

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

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

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

вот тут есть информация:
http://www.cplusplus.com/reference/cstring/strtok/
0
The_bolT
70 / 70 / 1
Регистрация: 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
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 14:51  [ТС] #4
нужно записать в другой string и ещо нужно работать с класом string C++ не с вектором
0
Silvestr1994
27 / 27 / 1
Регистрация: 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
hofmn
Helter Skelter
61 / 61 / 1
Регистрация: 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
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 16:21  [ТС] #7
нужно разбить строку без пробелов
0
Avazart
Нарушитель
Эксперт С++
7233 / 5405 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
03.03.2013, 16:31 #8
Смотри пример калькулятора из книги Страуструпа "специального издания"
0
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:14  [ТС] #9
не нашол)))
0
Avazart
Нарушитель
Эксперт С++
7233 / 5405 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
03.03.2013, 17:19 #10
Страуструп "Язык программирование 3-издание" 6.1. Калькулятор стр147
0
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:28  [ТС] #11
нету там разделения на лексеми
0
Avazart
Нарушитель
Эксперт С++
7233 / 5405 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
03.03.2013, 17:30 #12
Учись читать... ну или думать...
0
Silvestr1994
27 / 27 / 1
Регистрация: 26.10.2012
Сообщений: 101
03.03.2013, 17:51  [ТС] #13
извиняюсь но можно код пожалуйста))
0
03.03.2013, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2013, 17:51
Привет! Вот еще темы с ответами:

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

Разбить строку string на подстроки - C++
Имеется строка string &quot;один два три четыре пять шесть семь восемь девять&quot;. Как ее разбить на подстроки из трех слов, чтоб получились...

Как разбить переменную типа String на 2 части? - C++
есть переменная типа String, например String slovo= &quot;кибер форум&quot; как ее разбить на 2 чести ( до пробела и после) так, чтоб String...

Читать строку типа string из файла, разбить ее на массив слов типа char - C++
Нужно сделать так что бы строчка вида &quot;&lt;слово1&gt;:&lt;слово2&gt;:&lt;слово3&gt;:&lt;слово4&gt;&quot; , считывалась и каждое слово заносилось в свою переменную....


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

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

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