如何在for循环中包含两个索引值测试条件?

时间:2018-10-26 19:37:46

标签: c++ for-loop while-loop

如何在for循环中包含两个索引值测试条件?

我希望解析字符串以获取数组语法(分别找到'['和']'的位置)

string arrangements="a[1]";

因此,出于时间复杂度的目的,我试图在一个for循环中进行操作。 我尝试过

for(int i=0; i<arrangements.size();i++){

if(arranements[i]=='['){
        cout<<"square opening is at : "<<i<<endl;

  while(arrangements[i]==']' ){

  cout<<"square closing is at : "<<i<<endl;
           i++;
        }
}
}

我什至尝试过

for(int i=0; i<arrangements.size();i++){


  while(arrangements[i]==']' && arrangements[i]=='['){

  cout<<"square closing is at : "<<i<<endl;
           i++;
        }
}
}

对不起,我没有与任何人保持联系,因此感谢您对好人的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用if...else ifswitch

if...else if的情况:

const int size = arrangements.size();
for(int i = 0; i < size; ++i)
{
  const char a = arrangements[i];
  if(a == '[')
    cout << "square opening is at : " << i << endl;
  else if(a == ']')
    cout << "square closing is at : " << i << endl;
}

答案 1 :(得分:0)

您可以使用find

for (int i = 0 ; i != arrangements.size(); ++i) {
    if (arranements[i] == '[') {
        std::cout << "square opening is at : " << i << std::endl;
        auto e = arrangements.find(']', i + 1);
        if (e != std::string::npos) {
            std::cout << "square closing is at : " << e << std::endl;
     }
}