2013-05-29 54 views
0

當我有一個簡單的代碼基本上是像下面的一個:分割錯誤使用basic_string.h +運算

static std::string const part1[] = {"Test1", "Test2", "Test3"}; 

static std::string const part2[] = {"Pass", "Fail", "Retry"}; 

std::string test = part1[1] + part2[0]; 

我已經包括string其又具有basic_string.h。我知道那裏有一個超載的+運算符。 當我建立這個時,我沒有得到任何錯誤,但是當我嘗試運行它時,出現了分割錯誤。 我後來注意到的問題是,如果我只是試圖打印數組元素,我看到相同的分段錯誤。 我看不到內存泄漏發生在哪裏。任何線索?

+0

什麼編譯器?我用clang&gcc嘗試構建代碼時遇到了語法錯誤。 –

+0

對不起,我把代碼放在這裏時犯了錯誤。我把數據聲明爲:static std :: string const part1 [] = {「Test1」,「Test2」,「Test3」};我在linux環境中使用eclipse。 – BlueBottle

回答

0

在你的代碼中使用C++數組聲明是不可能的。

一個有效的代碼示例是

static std::string const part1[] ={"Test1", "Test2", "Test3"}; 
static std::string const part2[] = {"Pass", "Fail", "Retry"}; 

std::string test = part1[1] + part2[0]; 
+0

這是我的代碼是如何,對不起,我輸入,而不是副本,所以主要類型。我現在注意到的問題是,如果我只是試圖打印數組元素,我看到了分割錯誤。這意味着我的字符串被聲明的方式不正確? static std :: string const part1 [] = {「Test1」,「Test2」,「Test3」}; – BlueBottle

+0

不,我認爲宣言是正確的。驗證您的索引是否出現錯誤 – 999k

+0

粘貼您嘗試打印數組元素的代碼, – 999k