Добавление текста в символ * - PullRequest
1 голос
/ 18 ноября 2010

Можно ли добавить текст к char*?

Поскольку этот код выдает ошибки:

name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";

(name3 = символ *)

Ответы [ 3 ]

16 голосов
/ 18 ноября 2010

Ваш вопрос помечен C ++ , поэтому используйте C ++. Избавьтесь от своих char* и используйте std::string:

std::string name = "...";

std::string name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";

Вы можете «добавить» двухсимвольные массивы (char *), выделив новый массив, достаточно большой для размещения обоих, и скопировав обе строки в новый массив. Я думаю, вы согласитесь, что std::string проще, но он также дает меньше возможностей для внесения незначительных ошибок в ваш код, что упрощает отладку и обслуживание в будущем.

2 голосов
/ 18 ноября 2010

Сначала вы должны выделить память, например:

char* name = new char[ BUFF_SIZE ];

, а затем использовать strcpy и strcat, но .. у вас есть тег c++.Используйте std::string

std::string name3 = "SELECT account_id FROM players WHERE name = '"
                    + 
                    std::string( name ) 
                    + 
                    "'";

или

std::string name3 = "SELECT account_id FROM players WHERE name = '";
name3 += name;
name3 += "'"; // or name3.push_back( ';' );

Примечание , если name не const char*, но std::string, вам не нужноиз явных преобразований, так что обратитесь к посту Мегар

1 голос
/ 18 ноября 2010

Вы также можете использовать sprintf для того, что вы описываете.

Кроме того, если это соединение с базой данных, вы можете рассмотреть возможность использования подготовленных операторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...