c ++读取数组中的每3个元素

时间:2016-03-09 11:55:33

标签: c++ arrays

我正在研究一个项目,我想按顺序打印一个字符串数组的每个3个元素。如果字符串是" cadgfacbda"我想在控制台中打印:

  

**" cad gfa cbd a" **

这是代码:

        string str("cadgfacbda");
        for(int i = 0 ; i < 3 ; i++)
        {
            for(int j = i ; j <  str.size() ; j +=3 )
            {
               cout << str[j]<<" ";
            }
        cout<<endl;
    }

但我得到的是:

  

c g c a

     

a f b

     

d a d

7 个答案:

答案 0 :(得分:6)

仅在一个循环中编码:

string str("cadgfacbda");
for(int i = 0 ; i < str.size() ; i++) {
   if(i && i%3==0)
      cout<<" ";
   cout << str[i];
}
cout<<endl;

答案 1 :(得分:4)

我认为它应该是这样的:

        string str("cadgfacbda");
        for(int i = 0 ; i < str.size() ; i++)
        {
            cout << str[j]<<" ";
            if( i % 3 == 0 )
                cout<<endl;
        }

这个过程假定你需要在每三个元素之后换行。如果您只需要空格,那么您可以尝试这样做:

        string str("cadgfacbda");
        for(int i = 0 ; i < str.size() ; i++)
        {
            cout << str[j];
            if( i % 3 == 0 )
                cout<<" ";
        }

答案 2 :(得分:3)

int main()
{
    typedef std::string::size_type size_type;

    std::string str("cadgfacbda");

    const size_type STEP_SIZE = 3;

    for(size_type i = 0 ; i < str.size() ; i+=STEP_SIZE)
    {
        std::cout << str.substr(i, STEP_SIZE) << " ";
    }

    std::cout << std::endl;

    return 0;
}

答案 3 :(得分:2)

这应该有效:

    string str("cadgfacbda");
    for(int i = 0 ; i < str.size() ; i++)
    {   
        if(i % 3 == 0 && i != 0) cout << " ";
        cout << str[i];
    }
    cout << endl;

答案 4 :(得分:2)

#include<stdio.h>
#include<string.h>
#include<string>
int main()
{
string str("cadgfacbda");
char arr[]=str.to_char();
for(int i=1;i<=strlen(arr);i++)
{
    printf("%c",arr[i-1]);
    if(i%3==0)
    {
        printf(" ");
    }

}
}

答案 5 :(得分:2)

这也应该有效:

int main() 
{

    std::string str = "cadgfacbda";

    for (int i = 0; i < str.length()-3; i++)
    {
        for (int j = 0; j < 3; ++j)
        {
            if ((3 * i + j) < str.length())
                std::cout << str[3 * i + j];
        }
        std::cout << " ";
    }

    return 0;
}

答案 6 :(得分:2)

我想有点晚了,但你可以只是子串。

std::string str("cadgfacbda");

for (std::size_t i = 0; i < str.size(); i += 3) {
    std::cout << str.substr(i, 3) << " ";
}

这为您节省了大量代码,并且更具可读性。

Live example