簡體   English   中英

如何連接字符串和const char?

[英]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<< ,它與coutoperator<<完全一樣,但是不會將文本打印到標准輸出(即控制台),但是它是內部緩沖區,您可以使用它的.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM