2017-01-01 22 views
-1

我正在尝试通过每个字符串索引并首先打印偶数索引,然后打印所有奇数索引。但是,我收到了分段错误,我不知道它是由什么引起的。移动字符串数组中的每个字符

这里是我的代码:

int sum; 
vector<string> array; 
string temp; 
for (int i = 0; i < num; i++) { 
    cin >> array[i]; 
} 

for (int i = 0; i < num; i++) { 
    temp = array[i]; 
    for (int j = 0; j < temp.size(); j++) { 
     sum = j; 
     if (sum % 2 == 0) { 
      cout << array[i][j]; 
     } 
    } 
} 
cout << " "; 
for (int i = 0; i < num; i++) { 
    temp = array[i]; 
    for (int j = 0; j < temp.size(); j++) { 
     sum = j; 
     if (sum % 2 != 0) { 
      cout << array[i][j]; 
     } 
    } 
} 

有谁看到我做错了吗?

+0

什么是变量'sum'点? – Shubham

+0

你不需要'总和%2'。您应该将增量设置为“i + = 2”,同样对于“j”。从偶数开始为0,奇数为1。 –

回答

0

vector<string> arrayvector,但你试图用cin >> array[i];访问在第一循环的i个值,从而让出界(没有i日指数!)和段错误。

你应该动态追加新值向量或预分配的空间所需要的量:

// in the first loop 
string test; 

cin >> test; 
array.push_back(test); 

另一种选择:

// change the declaration 
vector<string> array(num); // a vector of size num 

// or pre-allocate memory after initialisation 
vector<string> array; 
array.resize(num); 
// then the loop... 
0

您还没有宣布的大小std::vector <std::string> array并且您正在尝试将其编入索引,从而导致分段错误。您可以使用array.push_back()来插入值,或者您必须在声明向量时定义大小。

或者:

std::vector <std::string> array (num); // given num is known beforehand 

或者:

vector<string> array; 
string temp; 
for (int i = 0; i < num; i++) { 
    cin >> temp; 
    array.push_back(temp); 
} 
1

你是不是正确填充阵列,所以你的循环会出界。

尝试一些更喜欢这个:

vector<string> array; 
string temp; 

array.resize(num); 
for(int i = 0; i < num; ++i) 
{ 
    cin >> array[i]; 
} 
/* Alternatively: 
for(int i = 0; i < num; ++i) 
{ 
    cin >> temp; 
    array.push_back(temp); 
} 
*/ 
/* Alternatively: 
copy_n(istream_iterator<string>(cin), num, back_inserter(array)); 
*/ 

for(int i = 0; i < num; ++i) 
{ 
    temp = array[i]; 
    for(int j = 0; j < temp.size(); j += 2) 
    { 
     cout << temp[j]; 
    } 
} 

cout << " "; 

for(int i = 0; i < num; ++i) 
{ 
    temp = array[i]; 
    for(int j = 1; j < temp.size(); j += 2) 
    { 
     cout << temp[j]; 
    } 
} 
相关问题