2015-11-24 5 views
-4

Я хотел, чтобы получить все значения/слова, прежде чем «=»получить все станд :: струны или первое слово, прежде чем символ «=»

Ex: 
    A = my first variable, I wanted to get all the strings; 
    var2 = I wanted to get this variable also; 
    var3 = jcdksjfckjdsckjdscjkdsbckjdsncjsjd; 

Теперь я хотел бы получить все переменные (A, var2, var3) из выше text (C++ std :: string).

Обновления: Один из возможных способов являются

vector<string> myClass::getVariablesFromDescription(string f_description) 
{ 
    vector<string> l_variables; 

    stringstream l_desc; 
    l_desc << f_description; 

    string l_temp; 
    string l_prvStr = string(); 

    for(int i=0; l_desc >> l_temp ; i++) 
    { 
     if(l_temp == string("=")) 
     { 
      l_variables.push_back(l_prvStr); 
     } 

     l_prvStr = l_temp; 
    } 

    return l_variables; 
} 
+0

может выполнять синтаксический анализ строки стиля C (char by char), но ищет, если какая-то готовая функция или способ доступен для std :: string. – NDestiny

+0

Посмотрите на интерфейс ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string), есть функции-члены, которые могут сделать его немного более чистым, чем ваше письмо код разбора. (в частности, 'find' и' substr' должны пригодиться) – Praetorian

+0

Я смотрел на них только раньше, мы можем получить индекс '=' с помощью find, но тогда как я могу найти слово раньше, чтобы = ??? любой намек – NDestiny

ответ

0

Вы можете создать новую строку, начать копирование оригинальных байт за байтом там и останавливается, когда вы обнаружили «=».

string example = "var69 = asdfghjkl"; 
string var_name; 

for(int i=0; i<example.size(); i++) 
{ 
    if(example[i] == '=') break; 
    var_name += example[i]; 
} 
0

Я еще не могу прокомментировать, но вы попросили намек.

find возвращает позицию, где знак =. Вы также знаете, что вы начали с 0. Затем вы можете получить строку от 0 до позиции и просто скопировать ее.

+0

Что касается других переменных, его континуальный текст и нет разделителей. – NDestiny

+0

Я не уверен, что вы имеете в виду, в вопросе, на который я ответил, он просто хотел, чтобы все данные с позиции 0 до знака first =. Я дал ему именно это. Найти значения по умолчанию 0, не указывая их. Я написал код дома, и он работал так, как ожидалось, я просто не забыл отправлять его по электронной почте. Опять же, он хотел намекнуть, поэтому делать все это было бы не слишком много намека. Как я уже сказал, я не могу комментировать, поэтому единственный способ дать подсказку - это. – MikeL