copy referenced string
От: Dmitry.INFO Эстония http://dmitry.info/
Дата: 07.01.06 10:25
Оценка:
Есть функция, some_function(string & a); в ней надо скопировать в "string b" "a" которая передаёться в аргементе функции.
Как сделать — ума не приложу. И пытался обычным cpystr, но пишет что не может преобразовать char* в const char*. Знающий народ — помогите, спосите от смерти.
Re: copy referenced string
От: korzhik Россия  
Дата: 07.01.06 10:29
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Есть функция, some_function(string & a); в ней надо скопировать в "string b" "a" которая передаёться в аргементе функции.

DI>Как сделать — ума не приложу. И пытался обычным cpystr, но пишет что не может преобразовать char* в const char*. Знающий народ — помогите, спосите от смерти.

спасая от смерти, привожу код:
#include <string>
using std::string;

void some_function(string & a)
{
  string b = a;
}
Re[2]: copy referenced string
От: Dmitry.INFO Эстония http://dmitry.info/
Дата: 07.01.06 10:41
Оценка: :))
Здравствуйте, korzhik, Вы писали:

K>спасая от смерти, привожу код:

K>
K>#include <string>
K>using std::string;

K>void some_function(string & a)
K>{
K>  string b = a;
K>}
K>

Да уж, если бы всё было бы так просто. Когда ты делаешь присваивание к b, то к b присваивается ссылка (const *), т.е. получается, что мы теперь управляем a, только через b. Короче говоря получился, впринципе, бесполезный объект. Мне же нужно... вот пример кода:
int main(int argc, char *argv[])
{
    string username; // input
        string userkey; // output
    
    strcpy((char*)username.c_str(), argv[1]);

        GenerateKey(username, userkey);
}

int GenerateKey(string & userkey, string & cckey) // also can be used with &
{
        string name; // input data
        name = userkey;
        printf("%i", name.length()); // обычно получается нуль
 
        /** или к примеру ***/

        transform(name.begin(), name.end(), name.begin(), toupper);
        printf("%i", userkey.length()); // к примеру есть ввожу в коммандной строке: prog.exe "Some String"
        printf("%i", name.length()); // то в userkey должно быть "Some String", а получается "SOME STRING" как в name
                                     // так и в userkey. Получается, что работаю со ссылкой.
}

Думаю теперь понятно...
Re[3]: copy referenced string
От: Dmitry.INFO Эстония http://dmitry.info/
Дата: 07.01.06 10:45
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Здравствуйте, korzhik, Вы писали:


K>>спасая от смерти, привожу код:

K>>
K>>#include <string>
K>>using std::string;

K>>void some_function(string & a)
K>>{
K>>  string b = a;
K>>}
K>>

DI>Да уж, если бы всё было бы так просто. Когда ты делаешь присваивание к b, то к b присваивается ссылка (const *), т.е. получается, что мы теперь управляем a, только через b. Короче говоря получился, впринципе, бесполезный объект. Мне же нужно... вот пример кода:
DI>
DI>int main(int argc, char *argv[])
DI>{
DI>    string username; // input
DI>        string userkey; // output
    
DI>    strcpy((char*)username.c_str(), argv[1]);

DI>        GenerateKey(username, userkey);
DI>}

DI>int GenerateKey(string & userkey, string & cckey) // also can be used with &
DI>{
DI>        string name; // input data
DI>        name = userkey;
DI>        printf("%i", name.length()); // обычно получается нуль
 
DI>        /** или к примеру ***/

DI>        transform(name.begin(), name.end(), name.begin(), toupper);
DI>        printf("%s", userkey.c_str()); // к примеру есть ввожу в коммандной строке: prog.exe "Some String"
DI>        printf("%s", name.c_str()); // то в userkey должно быть "Some String", а получается "SOME STRING" как в name
DI>                                     // так и в userkey. Получается, что работаю со ссылкой.
DI>} 
DI>

DI>Думаю теперь понятно...
Re[3]: copy referenced string
От: korzhik Россия  
Дата: 07.01.06 10:50
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Мне же нужно... вот пример кода:

DI>int main(int argc, char *argv[])
DI>{
DI>    string username; // input
DI>   string userkey; // output
    
DI>    //strcpy((char*)username.c_str(), argv[1]); // так нельзя делать
      username = argv[1];    

DI>        GenerateKey(username, userkey);
DI>}
Re[4]: copy referenced string
От: Dmitry.INFO Эстония http://dmitry.info/
Дата: 07.01.06 10:58
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Dmitry.INFO, Вы писали:


DI>>Мне же нужно... вот пример кода:

K>
DI>>int main(int argc, char *argv[])
DI>>{
DI>>    string username; // input
DI>>   string userkey; // output
    
DI>>    //strcpy((char*)username.c_str(), argv[1]); // так нельзя делать
K>      username = argv[1];    

DI>>        GenerateKey(username, userkey);
DI>>} 
K>

Так а как скопировать то? Надо char в string перевести.
Re[5]: copy referenced string
От: korzhik Россия  
Дата: 07.01.06 11:01
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Так а как скопировать то? Надо char в string перевести.


username = argv[1];
Re: copy referenced string
От: Аноним  
Дата: 07.01.06 11:01
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Есть функция, some_function(string & a); в ней надо скопировать в "string b" "a" которая передаёться в аргементе функции.

DI>Как сделать — ума не приложу. И пытался обычным cpystr, но пишет что не может преобразовать char* в const char*. Знающий народ — помогите, спосите от смерти.


void test(std::string &szStr)
{
    std::string szCopyStr;

    szCopyStr.append(szStr);

    std::transform(szCopyStr.begin(), szCopyStr.end(), szCopyStr.begin(), toupper);

    printf("%s",szStr.data());
    printf("%s",szCopyStr.data());
    szCopyStr.clear();
}
Re[4]: copy referenced string
От: Dmitry.INFO Эстония http://dmitry.info/
Дата: 07.01.06 11:02
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, Dmitry.INFO, Вы писали:


DI>>Мне же нужно... вот пример кода:

K>
DI>>int main(int argc, char *argv[])
DI>>{
DI>>    string username; // input
DI>>   string userkey; // output
    
DI>>    //strcpy((char*)username.c_str(), argv[1]); // так нельзя делать
K>      username = argv[1];    

DI>>        GenerateKey(username, userkey);
DI>>} 
K>

Спасибо. Даже и не думал, что можно char к string'у присваивать. Надо будет поподробнее ознакомиться с STL.
Спасибо вам за исправление моей ошибки!
Re[5]: copy referenced string
От: Аноним  
Дата: 07.01.06 11:19
Оценка:
Здравствуйте, Dmitry.INFO, Вы писали:

DI>Здравствуйте, korzhik, Вы писали:


DI>Спасибо. Даже и не думал, что можно char к string'у присваивать. Надо будет поподробнее ознакомиться с STL.

DI>Спасибо вам за исправление моей ошибки!

basic_string& operator=(const E *s);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.