我想编写一个 for 循环来传递 0 到 9 的字符串:
for (string j = "0"; j < "10"; j++) {
}
但它不知道运算符 ++(它得到一个整数 (1) 而不是字符串“1”)。
我想写:j+="1"
,但随后j
将是"01"
然后"011"
...
ps 我不想使用函数#include <string>
或其他东西。(stoi等)
任何帮助表示赞赏!
用整数循环,然后手动将其转换为字符串?
像
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;
}
这适用于任何类型的整数,没有限制。
您可以j[0]++
将第一个字符增加到下一个 ascii 值。但这仅适用于'0'-'9'
编辑: 只是一个想法,而不是完美的代码: for 0
to 20
;
i = 0;
(j > "9") && (i==0) ? j[i]++ : (++i, j="10");
不是这样,但是...
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;
}
有你的限制(虽然我不知道你如何使用string
没有#include <string>
):
const char* x[] =
{
"0", "1", .... , "10"
}
for ( int i = 0 ; i <= 10 ; i++ )
{
x[i]....
}
您可以将 atoi 用于:
#include <stdlib.h> // or #include <cstdlib>
for (int j = atd::atoi("0"); j < std::atoi("10"); j++) {
}