【问题标题】:char*-Array as Parameterchar*-数组作为参数
【发布时间】:2012-09-21 11:06:55
【问题描述】:

我想把下面的代码放在一个函数中:(代码不完整,但我想你应该很清楚)

char *parsedData[SEPERATOR];

for(int i=0; i<SEPERATOR; i++)
{
    parsedData[i]=tmp;
}

函数应该如下所示:

int main()
{
    char *parsedData[SEPERATOR];
    Parser(WTString, parsedData);
}
int Parser(char *WTString, *parsedData[SEPERATOR])
{
    for(int i=0; i<SEPERATOR; i++)
    {
        parsedData[i]=tmp;
    }
}

代码在一个函数中运行良好。通过将代码分成两个函数,我没有得到可用的数据。

如果有人可以帮助我,我将不胜感激。我不想使用更多的库。

【问题讨论】:

    标签: c++ arrays multidimensional-array parameters function-pointers


    【解决方案1】:

    如果你不想用stl,我建议这个功能:

    int PointToDefault(char* target, char** parsedData, unsigned int count)
    {
      for (unsigned int i=0; i<count; i++)
        {
          parsedData[i] = target;
        }
    }
    

    还有这个电话:

    #define SEPERATOR 15
    int main()
    {
      char tmp[] = "default string";
    
      char *parsedData[SEPERATOR];
      PointToDefault(tmp, parsedData, SEPERATOR);
    }
    

    【讨论】:

    • 没关系。如果计数是常数,传递它有什么意义?
    • 如果您需要将它用于两个不同长度的字符串或在另一个程序中,您无需更改函数中的任何内容(如果是为了工作,您可能需要重新测试编辑它以证明它仍然在做它应该做的之后的整个功能)。另外,按照您的推理,您可以将字符串声明为全局,在硬编码的函数中引用它们并省略所有参数,但是将其提取到函数中有什么用呢?
    • 重点是,这样做对于问题所问的问题没有任何影响
    • 好的,但是为什么将数组作为参数传递,而在函数本身中定义它的长度呢?那不会很一致。如果你要模块化你的代码,你也可以一路走下去。当然你是对的,它会这样工作,但是将所有代码放入main 或将数组用作全局;)
    【解决方案2】:

    char *parsedData[SEPERATOR]; 为什么?

    为什么需要在 C++ 中使用指向 char 的原始指针数组?

    你为什么不直接使用std::vector&lt;std::string&gt;,让自己免于痛苦和绝望。

    【讨论】:

      【解决方案3】:

      C++ 的实现方式如下所示:

      #include <string>
      #include <vector>
      
      std::vector<std::string> Parser(const char *WTString)
      {
          std::vector<std::string> result;
          for(std::size_t i = 0; i != SEPERATOR; ++i)
          {
              result.push_back(tmp); // whatever tmp is 
          }
          return result;
      }
      

      我不想使用更多的库。

      别担心,我的代码示例只需要标准库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        相关资源
        最近更新 更多