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

Получить указатель на символ строки string - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Код со структурой не возвращает ничего http://www.cyberforum.ru/cpp-beginners/thread1238986.html
Написал код: #include <iostream> using std::cout; using std::cin; using std::endl; struct time { unsigned char hour; unsigned char minute; unsigned char second;
C++ Работает ли указатель на базовый класс исключения, когда попадает в блок catch Работает ли указатель на базовый класс исключения, когда попадает в блок catch так же как обычно? То есть, если есть переопределенные вирутальные методы, то искользуется ли нужный? http://www.cyberforum.ru/cpp-beginners/thread1238959.html
C++ Алгоритм поиска Эйлерового пути, не используя матрицу смежности или инцидентности
Есть граф с множеством вершын Х = { 1, 2, 3, 4, 5} формула |x1 - x2| = 1 то есть если модуль разницы двух вершин 1, то они смежны Пример |1-2| = 1 - вершыны 1 и 2 смежны, |3-5| = 2 - вершыны 3 и 5 НЕсмежны, |5-4| = 1 - 5 и 4 смежны, |4-5| = 1 - 5 и 4 смежны
C++ Чтение/запись в файл с использованием многопоточности
Доброго времени суток! Хочу решить следующую задачу: Есть большой бинарный файл (несколько гигабайт к примеру). Нужно разбить этот файл на части и записать в другой файл хэши этих частей, используя многопоточность (многопроцессорность). С ней я никогда не работал. Читал про процессы, потоки и т.д. Но никогда не использовал в программах. Предполагаю сделать так #include "header.h" using...
C++ Скиньте литературу по спискам в C++ http://www.cyberforum.ru/cpp-beginners/thread1238914.html
Скиньте литературу по спискам в С++, НО которая расчитана на полного чайника (т.е. где все будет до мелчайших подробностей расписано). Может кто учился по такой, может знает.
C++ Как создать фигуры для тетриса? Привет всем! Захотел написать простенькую игру и решил начать с тетриса. Пишу в visual studio 2013 c++. Как и всегда появляются проблемы: Нарисовал текстурки для фигур, но я не знаю как из текстур сделать фигуры. P.s. Текстуры прикрепил к посту. подробнее

Показать сообщение отдельно
GetHelp
-8 / 60 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
06.08.2014, 10:35  [ТС]     Получить указатель на символ строки string
ForEveR, а если мне очень надо не константный указатель?

Добавлено через 1 минуту
вот смотрите короче, я пишу простой строковый калькулятор и мне надо через strtod сконвертить часть строки в число и получить соответственно символ за числом

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
#include <math.h>
 
using namespace std;
 
bool GetSolve(const string& expression, double& result) //Математический интерпретатор
{
    if (expression.empty()) return false; //Если строка пустая - выход
    string tmp(expression); //Копия исходной строки без пробелов
    tmp.erase(remove(tmp.begin(), tmp.end(), ' '), tmp.end()); //Удаляем пробелы в строке
    vector<char> operations; //Стек для операций
    vector<double> numbers; //Стек для чисел
    const char* set_operations = "()^+-*/"; //Операции
    const char* set_numbers = "0123456789."; //Числа
    //Заполняем оба стека
    for (int i = 0; i < tmp.length() - 1; i++)
    {
        if (strchr(set_operations, tmp[i])) //Если символ - операция
            operations.push_back(tmp[i]); //Добавляем в стек
        else
            if (strchr(set_numbers, tmp[i])) //Если символ - цифра
            {
                const char* str = tmp.c_str();
                char* ptr = str + i; //Указатель на текущий символ
                double d = abs(strtod(ptr, &ptr)); //Получаем в d число, а в ptr - укзатель на символ после числа
                numbers.push_back(d); //Заносим число в стек
                i = ptr - tmp.begin(); //Считаем номер символа после числа и прыгаем туда
            }
            else return false; //Если символ не операция и не число - выход
    }   
    //Анализируем стеки
    result = numbers.back();
    return true;
}
 
int main()
{
    string expression;
    double result;
    while (true)
    {
        cout << "Expression: ";
        cin >> expression;
        if (GetSolve(expression, result))
            cout << "Result: " << result << "\n\n";
        else
            cout << "Input error !\n\n";
    }
    return cin.get();
}
з.ы. анализ стеков еще не дописал...
 
Текущее время: 07:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru