我嘗試分配兩個C字符串一次:C++:在一行中爲char **分配兩個值?
char **pair = {"name","joe"};
但我收到錯誤消息:
'initializing' : cannot convert from 'const char [5]' to 'char **'
但我覺得這樣的事情之前,爲我工作?
我嘗試分配兩個C字符串一次:C++:在一行中爲char **分配兩個值?
char **pair = {"name","joe"};
但我收到錯誤消息:
'initializing' : cannot convert from 'const char [5]' to 'char **'
但我覺得這樣的事情之前,爲我工作?
Joachim方法創建只讀字符串。這就是你如何創建一個常量字符串文字的數組。
的另一種方式,
// MAX_LEN being the max string length.
char pair[][MAX_LEN] = {"name","joe"}; // This makes pair read-writeable,
您聲明指針到指針但初始化是一個指針數組:
const char *pair[] = { "name", "joe" };
如上所述我添加const
關鍵字來聲明。這是因爲指針是指向字符串的指針,文字是常量並且不能更改。添加const
可以幫助程序員不會錯誤地對數組中的字符串進行更改。
+1也注意使用'const'。在答案中解釋這個值是否值得? – simonc 2013-05-14 07:58:45
使用C++的設施,這將節省你痛苦的世界:
vector<string> field = { "name", "joe" };
雖然也許你需要:
pair<string, string> field("name", "joe");
或者更好的是,可能:
struct Person {
Person(const string& name) : name(name) {}
const string name;
};
Person boss("joe");
此處給出的所有答案都是正確的。選擇什麼取決於上下文:
如果不是1或2,那麼去Peter Wood的。需要注意的是
vector<string> field = { "name", "joe" };
需要C++ 11
爲const char *對[] = { 「姓名」, 「喬」};
這是最好的解決方案
這是C還是C++?用gcc 4.7.2,試試'char * pair [] = {「name」,「joe」};' – 2013-05-14 07:57:25
[Simple C array declaration/assignment question]可能的重複(http://stackoverflow.com/questions/1582165/simple-c-array-declaration-assignment-question) – 2013-05-14 07:57:48
另外,請訪問http://c-faq.com並閱讀指針。 **它們不是數組**並且數組也不是指針。 – 2013-05-14 07:58:26