1

0 から 9 までの文字列を渡す for ループを書きたいと思います。

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

}

しかし、演算子 ++ を認識していません (文字列 "1" ではなく、整数 (1) を取得します)。

私は次のように書くとj+="1"思います:j"01""011"

psの関数やその他のものを使用したくありませ#include <string>ん。(ストイなど)

どんな助けでも大歓迎です!

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

そうじゃないけど…

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 に答える
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 に答える
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 に答える
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 に答える