我想编写一个for循环,将字符串传递给0到9:
for (string j = "0"; j < "10"; j++) {
}
但它不知道operator ++(它得到一个整数(1)而不是字符串“1”)。
我想写一下:j+="1"
,然后j
将"01"
然后"011"
......
P.S。我不想使用#include <string>
或其他功能。 (stoi等)
任何帮助表示赞赏!
答案 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;
}
这适用于任何类型的整数而没有限制。
答案 2 :(得分:1)
你可以像j[0]++
那样将第一个字符增加到下一个ascii值。但这仅适用于'0' - '9'
修改:只是一个想法,而不是一个完美的代码:0
到20
;
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++) {
}