从字符串向量中获取字符串的第一个字符
get first character of a string from a string vector
如何从字符串向量中的字符串中获取第一个字符,或者如何在迭代该向量时通过索引获取字符。这是我的代码:
vector<string>::iterator i=vec.begin();
while(i!=vec.end()){
if(i[0]==ch)
cout<<"output";
}
它给出了错误:
"operator=="不匹配(操作数类型为"std::basic_string"answers"char")|
尝试以下
vector<string>::iterator i=vec.begin();
while(i!=vec.end()){
if(i[0][0] == ch)
cout<<"output";
++i;
}
i[0]
返回迭代器i指向的整个字符串,而i[0][0]
返回字符串的第一个字符,即使字符串为空(在这种情况下,值将为"\0")。:)
但你可以写更简单的
for ( const std::string &s : vec )
{
if ( s[0] == ch ) cout << "output";
}
如果你想使用一些可以有任何值的索引,那么代码可能看起来像
vector<string>::iterator i=vec.begin();
while(i!=vec.end()){
if( index < i[0].size() && i[0][index] == ch)
cout<<"output";
++i;
}
或
for ( const std::string &s : vec )
{
if ( index < s.size() && s[index] == ch ) cout << "output";
}
与其在这里编写循环,不如使用标准算法。例如,要显示以指定字母开头的所有字符串(每行一个),可以使用以下内容:
std::copy_if(vec.begin(), vec.end(),
std::ostream_iterator<std::string>(std::cout, "n"),
[ch](std::string const &s) { return s[0] == ch; });
要获得向量的索引k
处的字符串,以下代码应该可以工作:
vector<string>::iterator i = vec.begin();
while (i != vec.end())
{
if (i - vec.begin() == k)
cout << (*i) << endl;
++i;
}
要从该字符串中获取字符,可以在适当的位置取消引用。
i
是序列的迭代器,而不是序列的元素。CCD_ 5就像一个指针;您需要执行*i
来获取迭代器所指向的元素。例如,(*i)[0]
是i
所指向的字符串的第一个字符(当然,假设它不是空的,如果它是空的,那么这是未定义的行为,可能会发生各种可怕的事情)。
此外,您似乎忘记了实际迭代您的序列;例如在每次迭代结束时以CCD_ 9前进。
除非您特别需要使用迭代器,否则您可能更喜欢类似的东西
for(std::string &s : vec) {
// do something with s
}
(或者更简单地说,auto &s : vec
)
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- C++:递归地将字符串中一个字母的所有实例替换为另一个字母
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 为什么第一个Dynamic_cast没有投射到基类?
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 使用C 中字符串标头的getline()函数将第一个char存储在字符串对象中
- 在将字符串转换为整数后,是否有一种方法可以保持数字的第一个零
- 将第一个boost::regex匹配放入字符串中
- 有一个字符串如何从第一个' /r/n/r/n '得到它的内容,直到2行从字符串结束
- 删除二进制字符串中的第一个0