Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > сцепление строк


Автор: yngwie19 23.1.2009, 19:36
Всем привет. Вообщем проблема заключается вот в чем. У меня есть программа которая работает с реестром. Она изменяет кое-какие записи. Привожу пример:

программа должна в определеных ключах реестра в параметре Path прописать путь до базы данных (база хранится в папке). Причем путь для всех баз начинается одинаково (C:\Program Files\MyProga\Data\), а дальше имя папки в которой хранится база. Т.е получается так:
 
C:\Program Files\MyProga\Data\Base1
C:\Program Files\MyProga\Data\Base2
C:\Program Files\MyProga\Data\Base3
..........................................................
и т.д

Вопрос: можно ли как-то сделать так, чтобы Я мог при запись в реестр как-то сцеплять стандартный для всех баз путь с именем конкретной базы. 
А то получается так, что Я создаю еще столько массивов, сколько у меня этих баз и с помощью strcat() делаю следущее:

Код

char string[60] = "C:\\Program Files\\MyProga\Data\\";
char *szBase[20];
strcat(strcpy(szBase[0],string),Base1));
strcat(strcpy(szBase[1],string),Base2));
strcat(strcpy(szBase[2],string),Base3));
strcat(strcpy(szBase[3],string),Base4));
 
и т.д Вообщем как быть

Автор: mes 23.1.2009, 19:40
можно. Например сделать функцию оболочку над записывающей и пользовать ее когда нужно.
 в функцию передавать строчку на запись и префикс, она объединит их и запишет.

Автор: bsa 23.1.2009, 20:37
yngwie19, а если использоваться Си для тебя не критично, то можешь воспользоваться возможностями std::string:
Код
std::string path = "C:\\Program Files\\MyProga\Data\\";
func( (path + file_name[0]).c_str() );
func( (path + file_name[1]).c_str() );
func( (path + file_name[2]).c_str() );
func( (path + file_name[3]).c_str() );

Автор: yngwie19 23.1.2009, 22:07
bsa, а где можно про это почитать ? мне хочется по-лучше разобраться.
Просто не понимаю что значит c_str(), эта функция какой-то библиотеки?
И обязятельно ли все включать в func( ) ?

Автор: mes 23.1.2009, 22:10
http://www.cplusplus.com/reference/string/string/

Автор: bsa 25.1.2009, 15:54
yngwie19, func - это некая твоя функций, которая будет работать с уже готовой строкой.
c_str() - это метод класса std::string.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)