【问题标题】:for loop: a string passes from "0" to "9"for 循环:字符串从“0”传递到“9”
【发布时间】:2013-04-03 10:10:36
【问题描述】:

我想写一个 for 循环来传递 0 到 9 的字符串:

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

}

但它不知道运算符 ++(它得到一个整数 (1) 而不是字符串“1”)。

我想写:j+="1",但随后j 将是"01",然后是"011"...

附言。我不想使用#include &lt;string&gt; 或其他的功能。 (stoi 等)

任何帮助表示赞赏!

【问题讨论】:

  • 您究竟可以使用什么?
  • 能否请您更准确地说明您的意图?
  • 我有一个 size_baskets 可以在 0 到 20 之间(它是一个字符串)。我有一个函数可以获取一个字符串并打印篮子号i 中的所有球。所以我必须这样做: for(int i = 0; i print(i);但是i必须是字符串,我想使用stoi函数(因为它属于,所以我必须发送一个字符串。
  • 我可以使用

标签: c++ string for-loop


【解决方案1】:

用整数循环,然后手动将其转换为字符串?

喜欢

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.

    【讨论】:

      【解决方案3】:

      不是这样,但是……

      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 到 20 之间的数字?
      【解决方案4】:

      您可以像 j[0]++ 一样将第一个字符增加到下一个 ascii 值。但这仅适用于'0'-'9'

      编辑: 只是一个想法,不是完美的代码:020

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

      【讨论】:

      • 谢谢.. 0-20 之间的数字有什么办法吗?
      • @AlonShmiel 是的,当值从 9 更改为 10 时,您可以有条件地使用 +=
      【解决方案5】:

      有你的限制(虽然我不知道你如何在没有#include &lt;string&gt; 的情况下使用string):

      const char* x[] = 
      {
          "0", "1", .... , "10"
      }
      
      for ( int i = 0 ; i <= 10 ; i++ )
      {
          x[i]....
      }
      

      【讨论】:

        【解决方案6】:

        您可以将 atoi 用于:

        #include <stdlib.h> // or #include <cstdlib>
        
        for (int j = atd::atoi("0"); j < std::atoi("10"); j++) {
        
        }
        

        【讨论】:

          猜你喜欢
          • 2017-01-15
          • 2016-01-12
          • 2018-09-02
          • 1970-01-01
          • 2015-03-24
          • 1970-01-01
          • 2015-04-26
          • 2021-02-20
          • 1970-01-01
          相关资源
          最近更新 更多