2013-05-28 161 views
-1

因此,我在使用getline(cin, str);然後string text[str.length()];以及在此之後的語句時想要合併它們(text[e] = text[e] + str[i];),我得到了分段錯誤。全碼:嘗試從getline中分配字符時出現分段錯誤

#include <cstdlib> 
#include <stdio.h> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    string str; 
    int i, e, space = 0; 

    getline(cin, str); 
    string text[str.length()]; 

    for(i=0; i<str.length(); i++) { 
     if(str[i]==' ') { 
      space++; 
      e++; 
     } 
     else { 
      text[e] = text[e] + str[i]; 
     } 
    } 

    return 0; 
} 
+0

變長數組不是標準(還)。 – chris

回答

5

e是未初始化,並且將很可能保持一個隨機值超出text界引起段錯誤的。這不會將所有變量初始化爲零:

int i, e, space = 0; 

只有space被初始化爲零。更改爲:

int i = 0, e = 0, space = 0; 

或:

int i = 0; 
int e = 0; 
int space = 0; 

據我所知,C++不支持可變長度數組。

+0

大聲笑,我認爲int我,e,空間= 0;將使他們所有的0 :)感謝 – EmiX

+0

'int我,e,空間;''我= e =空間= 0;'會做到這一點。 – user1810087

相關問題