从字符串向量中获取字符串的第一个字符

新手上路,请多包涵

如何获取第一个字符或如何在遍历该向量时从字符串向量中的字符串按索引获取字符。这是我的代码:

 vector<string>::iterator i=vec.begin();
    while(i!=vec.end()){
        if(i[0]==ch)
            cout<<"output";
    }

它给出了错误:

‘operator==’ 不匹配(操作数类型为 ‘std::basic_string’ 和 ‘char’)|

原文由 helix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

尝试以下

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";
}

原文由 Vlad from Moscow 发布,翻译遵循 CC BY-SA 3.0 许可协议

要获取向量的索引 k 处的字符串,以下代码应该可以工作:

 vector<string>::iterator i = vec.begin();
while (i != vec.end())
{
  if (i - vec.begin() == k)
    cout << (*i) << endl;
  ++i;
}

要从该字符串中获取字符,您可以在适当的位置取消引用。

原文由 therainmaker 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏