2013-04-03 46 views
1

傳遞,我想寫一個for循環,通過對0至9中的字符串:for循環:一個字符串從「0」到「9」

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

} 

,但它不知道運營商++ (它獲得一個整數(1)而不是一個字符串「1」)。

我覺得寫的:j+="1",但隨後j"01"然後"011" ...

附:我不想使用#include <string>或其他的功能。 (stoi等)

任何幫助表示讚賞!

+1

正是* *可以使用哪些? –

+0

Couls你更精確的關於你的意圖嗎? –

+0

我有一個size_baskets可以介於0到20之間(它是一個字符串)。我有一個函數可以得到一個字符串,並打印出編號爲'i'的籃子中的所有球。所以我必須做一些事情:for(int i = 0; i print(i);但'我'必須是字符串,並且我想要使用stoi函數(因爲它屬於,所以我必須發送一個字符串。 –

回答

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; 
} 
+0

謝謝! 我該如何改變它的工作方式數字在0到20之間? –

+0

@AlonShmiel見編輯 – kassak

1

您可以像j[0]++一樣將第一個字符增加到下一個ascii值。但這只是對「0」 - 「9」

編輯:只是一個想法,不是一個完美的代碼:爲020;

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

謝謝..有沒有辦法做到這一點0-20之間的數字 –

+0

@AlonShmiel有條件地使用'+ ='當數值從'9'變爲'10'時 –

+0

@AlonShmiel審查更新代碼 –

0

有了您的約束(雖然我不知道你如何使用string#include <string>):

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

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

環路與整數,然後手動將其轉換爲字符串?

for (int i = 0; i < 10; i++) 
{ 
    string j(1, '0' + i); // Only works for single digit numbers 
} 
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

0

可以使用帶的atoi:

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

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

}