我正在研究一个项目,我想按顺序打印一个字符串数组的每个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
答案 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) << " ";
}
这为您节省了大量代码,并且更具可读性。