[英]How concatenate a string and a const char?
我需要在c中放入“ hello world”。 我怎樣才能做到這一點 ?
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
s(或const char *
s,但我建議將后者轉換為前者)時,您可以將它們“加”起來形成更長的字符串。 但是,如果您想追加的內容不只是已有的字符串,則可以使用stringstream
及其operator<<
,它與cout
的operator<<
完全一樣,但是不會將文本打印到標准輸出(即控制台),但是它是內部緩沖區,您可以使用它的.str()
方法從中獲取std::string
。
std::string::c_str()
函數返回指向其中包含的字符串的const char
緩沖區(即const char *
)的指針,該字符串以null終止。 然后,您可以將其用作任何其他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();
編輯:然后可以將字符串傳遞給帶有c_str()
的const char *
的C函數。
my_c_func(str1.c_str());
並且如果C函數使用非const char *或需要所有權,則可以執行以下操作
char *cp=std::malloc(str1.size()+1);
std::copy(str1.begin(), str2.end(), cp);
cp[str1.size()]='\0';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.