【问题标题】:How to split a string array and then compare every first index of that splited array with a Character?如何拆分字符串数组,然后将该拆分数组的每个第一个索引与字符进行比较?
【发布时间】:2020-04-08 11:33:24
【问题描述】:

我想从用户那里获取字符串数组并输出那些从字符“A”开始的字符串索引。 有没有办法做到这一点?

#include <iostream>
#include <string>
using namespace std;
const int size=3;
void input(string name[size]);
void byname(string name[size]);
struct employee
{
    string name[size];  
}emp;
int main() 
{
    input(emp.name);
    byname(emp.name);
    return 0;
}
void input(string name[size]){
    cout<<"Enter Names of the employees:\n";
    for(int i=0;i<size;i++)
    cin>>emp.name[i];
}

void byname(string name[size])
{
    int i,j;
        for(i=0;i<size;i++)
        {
        if(name[i]=="A")
        cout<<"Name starting with A is "<<emp.name[i];
        else if(name[i]=="a")
        cout<<"Name starting with a is "<<emp.name[i];
       }
}

【问题讨论】:

  • 是的,有这样的方法。你尝试过什么,你到底在哪里卡住了?
  • 我尝试将整个字符串与字符“A”进行比较,因为该字符串不仅包含单个字符,因此它不起作用。我被要求首先在一个字符串数组中取 10 个人的名字,然后只输出那些以“A”开头的名字。
  • 如果您不发布代码,我们无法告诉您代码出了什么问题。
  • 这是一个完整的程序,我要问的只是其中的一小部分,好的,我将向您展示我卡住的那个功能。
  • 我已经提供了我的代码,现在你可以看到,这将是很大的帮助

标签: c++ arrays string


【解决方案1】:

在 c++ 中,您可以使用数组索引来访问字符串的单个字符,更多关于 c++ 字符串的信息请参见:http://www.cplusplus.com/reference/string/string/, 提出您的问题,在那个 byname function 中,将比较更改为:

if(name[i][0]=='A')
    cout<<"Name starting with A is "<<emp.name[i];
else if(name[i][0]=='a')
    cout<<"Name starting with a is "<<emp.name[i];

如果您遇到任何其他问题,请告诉我!干杯!

【讨论】:

  • 非常感谢,帮了大忙。
  • 我还有一个问题,如果我想用最后一个字符而不是第一个字符来检查那个特定的字符串怎么办?
  • 通过使用相同的逻辑,使用数组索引来访问字符串的单个字符。要检查最后一个字符,需要检查最后一个索引,可以通过字符串总长度减1得到,更具体地说, int lastIndex = name[I].length() - 1;并像 if( name[I][lastIndex] == 'A') 一样进行比较。您应该查看上述链接中提供的字符串文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多