为什么我要获得元素填充元素的零长度
Why do I get zero length for a string filled element by element?
这是我的问题。我正在使用G 编译(Ubuntu 7.3.0-27ubuntu1〜18.04)7.3.0
我想检查字符串的每个元素,并仅在辅音时复制它。
这就是我尝试这样做的方式:这只是选择元音的功能:
bool _is_vowel(char a){
if (a=='a' || a=='A' || a=='e' || a=='E' ||a=='i' || a=='I' || a=='o' || a=='O' || a=='u' || a=='U' || a=='y' || a=='Y')
return true;
else return false;
}
这是不起作用的代码。具体来说,ss.length()
内部似乎是0,字符串SS不包含字符,但它们在While循环内正确打印。
main(){
int i=0, c=0;
string ss, name;
cout << "insert namen";
getline(cin, name);
while (i<int(name.length())){
if (!_is_vowel(name[i])){
cout << name[i]<< "t";
ss[c]=name[i];
cout << ss[c]<< "n";
c++;
}
i++;
}
cout << int(ss.length())<<endl;
cout << ss;
}
有人可以向我解释我错了或给我一些参考吗?预先感谢
string ss;
声明长度为0的字符串。
ss[c] = ...;
然后尝试访问并设置为不存在的索引。这是未定义的行为。如果您使用了界限检查的.at()
,则会立即抓到。
要解决此问题,您可以用+=
操作员将其附加到字符串:
ss += name[i];
或者您可以使用push_back()
:
ss.push_back(name[i]);
此外,而不是检查每个。单身的。角色,我强烈建议您以更好的方式看这个答案。
问题在您的时循环中,很容易解决:
ss += name[i];
您只需要连接到字符串
相关文章:
- 用随机元素填充矢量
- 为什么数组的 GCC 聚合初始化首先用零填充整个事物,包括非零元素?
- 无法获取已填充堆栈<char>的顶部元素
- 如何填充闰年的元素
- 如何将矢量大小扩展一个元素并用变量填充它
- C++初始化/填充静态成员 std::数组元素到特定值
- 如何更改数组的大小并用自动化元素填充它
- 为什么我要获得元素填充元素的零长度
- 为什么getxattr会填充额外的元素
- C++2d数组,用文件中最后一个元素值填充所有元素
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 一种方式链接列表和不需要的第一个元素AFRTER填充
- 在c++中填充和移除向量和映射中的元素
- 从矢量中擦除元素,并向量填充结构
- 用相同的值填充了 wchar 数组元素
- 只有"double"元素的结构会有填充吗?
- 用固定数量的元素随机填充矢量的矢量
- 用列表中的元素填充向量
- 用另一个元组中的元素填充一个元组
- 如何在元素填充过程中经济地存储稀疏矩阵