Мне нужно поставить "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';