Консультация № 124923
26.02.2008, 15:02
0.00 руб.
0 2 2
Здравствуйте! Подскажите какой функцией воспользоваться.
Задача следующая: есть данные которые выглядят следующим образом Физ, ФН-2, БМГ-4, СГУ-7 и т.д. мне нужно получить соотвествующие переменые, в виде Физ, ФН, БМГ, СГУ, т.е. считать значения строки до знака - если он есть, если его нет, то так и оставить.
Заранее спасибо!

Обсуждение

Неизвестный
27.02.2008, 02:58
общий
это ответ
Здравствуйте, Mart!
В приложении вы найдете версию решения вашей задачи с использованием STL-строк.

Приложение:
#include <string>#include <iostream>using namespace std;string func(const string& str, char delimiter) { string::size_type delim_idx; if((delim_idx = str.find_first_of(delimiter)) != string::npos) return str.substr(0, delim_idx); return string(str);}int main(int argc, char* argv[]) { string s1("Fiz"); string s2("FN-2"); string s3("BMG-4"); string s4("SGU-7"); cout << func(s1, ‘-‘) << endl; cout << func(s2, ‘-‘) << endl; cout << func(s3, ‘-‘) << endl; cout << func(s4, ‘-‘) << endl; return 0;}
Неизвестный
28.02.2008, 09:32
общий
это ответ
Здравствуйте, Mart!
Саме простое решение проблемы: сначала пропускаем все символы, не являющиеся русскими буквами, а потом копируем, пока не встретится первый символ, не являющийся русской буквой. Модификации просты :))
Код модуля в приложении

Приложение:
char * TForm1::GetStr(const char *src){ char *dest = (char *) calloc(strlen(src)+1, sizeof(char)); char *buf = (char *) calloc(strlen(src)+1, sizeof(char)); strcpy(buf, src); char *p = dest; while (!((*buf >= ‘А‘) && (*buf <= ‘я‘))) *buf++; while (*buf) if ((*buf >= ‘А‘) && (*buf <= ‘я‘)) *dest++ = *buf++; else break; realloc(p, strlen(dest)+1); free(dest); free(buf); return p;
Форма ответа