C ++将C风格的字符串作为参数传递

时间:2012-05-06 15:19:50

标签: c++ pointers

我在处理c ++中的C风格字符串时遇到了一些麻烦。简而言之,我要做的是将我的main方法中的cstring传递给我的一个对象的构造函数。

例如

class sample
{
  public: // Initalization
  Sample( const char * inFile);
}//End sample class

然后在主要方法中。

//Main method
int main ( int argc, const char * argv[] )
{
   Sample aSample(argv[1]);
}

现在,基于我的假设,当我使用const char*取消引用第二个指针时,我应该返回argv[1]。根据我的理解char *argv[]只是另一种说法**argv的方式。

另外,为了确保我对const的理解是正确的,const char *说“这个指针指向一个const char”,其中const char const *说“这个指针地址不能改变,并且它指向的地址也是const“。

更新 -

只是为了澄清这是一个两部分问题。

  1. 如果样本中的构造函数传递cstring不正确,我该如何更正?
  2. 了解const
  3. 更新了我上面的错误陈述,即当它应该是“第二个”时我取消引用“第一个”指针。谢谢你指出这一点。

    第二次更新 - 我正在使用argv [1]因为我从命令行接收信息而argv [0]只保存可执行文件的路径,我对此不感兴趣。

    非常感谢任何帮助。

    -Freddy

1 个答案:

答案 0 :(得分:3)

argv[1]取消引用第二个指针,而不是第一个指针。你想要argv[0]。 C ++中的数组是基于 0的

此外:

const char const *

是不合法的(归功于本杰明的指出)。在这种情况下,const都应用于char。如果希望指针为const,则需要

char const * const

const char * const

编辑:

问题1)CString可以将char*作为构造函数的参数,因此它应该可以工作。

问题2)const绑定到左边,除非左边没有任何内容。因此const charchar const是相同的。对于const指针,您需要* const,而不是const *