1

我想编写一个 for 循环来传递 0 到 9 的字符串:

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

}

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

我想写:j+="1",但随后j将是"01"然后"011"...

ps 我不想使用函数#include <string>或其他东西。(stoi等)

任何帮助表示赞赏!

4

6 回答 6

2

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

for (int i = 0; i < 10; i++)
{
    string j(1, '0' + i);  // Only works for single digit numbers
}
于 2013-04-03T10:15:03.507 回答
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;
}

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

这是一个简短的演示

于 2013-04-03T10:17:10.800 回答
1

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

编辑: 只是一个想法,而不是完美的代码: for 0to 20;

   i = 0;
   (j > "9") && (i==0) ? j[i]++ : (++i, j="10");
于 2013-04-03T10:12:19.357 回答
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;
}
于 2013-04-03T10:15:30.257 回答
0

有你的限制(虽然我不知道你如何使用string没有#include <string>):

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

for ( int i = 0 ; i <= 10 ; i++ )
{
    x[i]....
}
于 2013-04-03T10:12:56.370 回答
0

您可以将 atoi 用于:

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

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

}
于 2013-04-03T11:05:22.473 回答