Мне нужно поставить "hello world" в c. Как я могу это сделать?
string a = "hello ";
const char *b = "world";
const char *C;
Мне нужно поставить "hello world" в c. Как я могу это сделать?
string a = "hello ";
const char *b = "world";
const char *C;
string a = "hello ";
const char *b = "world";
a += b;
const char *C = a.c_str();
или без изменения a
:
string a = "hello ";
const char *b = "world";
string c = a + b;
const char *C = c.c_str();
Маленькое редактирование, чтобы соответствовать количеству информации, предоставленной 111111.
Если у вас уже есть string
(или const char *
s, но я рекомендую отнести последнее к первому), вы можете просто "суммировать" их, чтобы сформировать более длинную строку. Но если вы хотите добавить что-то большее, чем просто строку, которую вы уже имеете, вы можете использовать stringstream
и operator<<
, который работает точно как cout
один, но не выводит текст на стандартный вывод (т.е. консоль), но для этого внутренний буфер, и вы можете использовать его .str()
для получения std::string
от него.
std::string::c_str()
возвращает указатель на буфер const char
(т.е. const char *
) содержащейся в нем строки, которая заканчивается на нуль. Затем вы можете использовать его как любую другую переменную const char *
.
если вам просто нужно конкатенировать, используйте функции operator +
и operator +=
#include <string>
///...
std::string str="foo";
std::string str2=str+" bar";
str+="bar";
Однако, если у вас есть много конфликтов, вы можете использовать поток строк
#include <sstream>
//...
std::string str1="hello";
std::stringstream ss;
ss << str1 << "foo" << ' ' << "bar" << 1234;
std::string str=ss.str();
EDIT: вы можете передать строку в функцию C с помощью const char *
с c_str()
.
my_c_func(str1.c_str());
и если C func принимает не const char * или требует права собственности, вы можете сделать следующее
char *cp=std::malloc(str1.size()+1);
std::copy(str1.begin(), str2.end(), cp);
cp[str1.size()]='\0';