在字符串数组中遍历每个字符
Moving through every character in a string array
我正在尝试浏览每个字符串索引并首先打印均匀的索引,然后打印所有奇数索引。但是我遇到了一个细分错误,但我不知道它是什么。
这是我的代码:
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];
}
}
}
有人看到我做错了什么吗?
您无法正确填充数组,因此您的循环脱离了界限。
尝试更多这样的东西:
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];
}
}
vector<string> array
是一个 empty vector
,但是您正在尝试使用第一个循环中的 cin >> array[i];
访问其 i
th值,从而脱离界限(<em)>没有 i
th index !)和segfault。
您应该附加动态上的新值或预先分配所需的空间:
// 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...
您尚未声明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);
}
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 遍历并行数组以确定C++中的最大数字
- 遍历顺序由 std::文件系统directory_iterator给出
- 遍历链表时的无限循环
- 如何遍历所有 ASCII 字符?
- 遍历 std::string 时如何获取没有数字的字符?
- 遍历字符* 错误没有从字符* 转换为 int
- 在C 中的字符串向量的字符串元素中循环遍历所有字符
- 在字符串数组中遍历每个字符
- 如何使用pair遍历所有可能的字符对
- 如何遍历整个字符串并一次播放一个字符C++
- 如何在不遍历内容的情况下查找文件中的字符数
- 指针可以用来遍历字符数组吗?
- 汇编:循环遍历一串字符并交换它们
- 逐个字符遍历字符串字符
- 在c++中遍历文件中的所有字符