for循环:字符串从“0”传递到“9”

时间:2013-04-03 10:10:36

标签: c++ string for-loop

我想编写一个for循环,将字符串传递给0到9:

for (string j = "0"; j < "10"; j++) {

}

但它不知道operator ++(它得到一个整数(1)而不是字符串“1”)。

我想写一下:j+="1",然后j"01"然后"011" ......

P.S。我不想使用#include <string>或其他功能。 (stoi等)

任何帮助表示赞赏!

6 个答案:

答案 0 :(得分:2)

用整数循环,然后手动将其转换为字符串?

for (int i = 0; i < 10; i++)
{
    string j(1, '0' + i);  // Only works for single digit numbers
}

答案 1 :(得分:2)

使用整数进行迭代,并将它们转换为循环内的字符串,如下所示:

// Your loop counter is of type int
for (int i = 0 ; i != 10 ; i++) {
    // Use string stream to convert it to string
    ostringstream oss;
    oss << i;
    // si is a string representation of i
    string si = oss.str();
    cout << si << endl;
}

这适用于任何类型的整数而没有限制。

Here is a short demo

答案 2 :(得分:1)

你可以像j[0]++那样将第一个字符增加到下一个ascii值。但这仅适用于'0' - '9'

修改:只是一个想法,而不是一个完美的代码:020;

   i = 0;
   (j > "9") && (i==0) ? j[i]++ : (++i, j="10");

答案 3 :(得分:1)

不是这样,但是......

char x[]={'0',0};
for(; x[0] <= '9'; ++x[0])
{
}

编辑:0..99版本

char x[]={'0','0',0};
int stroffs = 1;
for(; x[0] <= '9'; ++x[0])
{
   for(x[1] = '0'; x[1] <= '9'; ++x[1])
   {
     char * real_str = x + stroffs;
   }
   stroffs = 0;
}

答案 4 :(得分:0)

根据您的约束条件(虽然我不知道您如何在没有string的情况下使用#include <string>):

const char* x[] = 
{
    "0", "1", .... , "10"
}

for ( int i = 0 ; i <= 10 ; i++ )
{
    x[i]....
}

答案 5 :(得分:0)

你可以使用atoi:

#include <stdlib.h> // or #include <cstdlib>

for (int j = atd::atoi("0"); j < std::atoi("10"); j++) {

}