0 から 9 までの文字列を渡す for ループを書きたいと思います。
for (string j = "0"; j < "10"; j++) {
}
しかし、演算子 ++ を認識していません (文字列 "1" ではなく、整数 (1) を取得します)。
私は次のように書くとj+="1"
思います:j
"01"
"011"
psの関数やその他のものを使用したくありませ#include <string>
ん。(ストイなど)
どんな助けでも大歓迎です!
整数でループしてから、手動で文字列に変換しますか?
お気に入り
for (int i = 0; i < 10; i++)
{
string j(1, '0' + i); // Only works for single digit numbers
}
次のように、整数で反復を行い、ループ内でそれらを文字列に変換します。
// 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;
}
これは、あらゆる種類の整数に対して制限なく機能します。
ここに短いデモがあります。
そうじゃないけど…
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;
}
j[0]++
最初の文字を次のASCII値に増やすことができます。ただし、これは '0'-'9' のみです
編集: 完璧なコードではなく、単なるアイデアです: for 0
to 20
;
i = 0;
(j > "9") && (i==0) ? j[i]++ : (++i, j="10");
atoi を次のように使用できます。
#include <stdlib.h> // or #include <cstdlib>
for (int j = atd::atoi("0"); j < std::atoi("10"); j++) {
}
string
あなたの制約で(ただし、なしでどのように使用するかわかりません#include <string>
):
const char* x[] =
{
"0", "1", .... , "10"
}
for ( int i = 0 ; i <= 10 ; i++ )
{
x[i]....
}