0

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

例如

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

然后在main方法中。

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

现在,根据我的假设,const char*当我使用argv[1]. 据我了解char *argv[],这只是 char 的另一种说法**argv

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

更新 -

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

  1. 如果示例中的构造函数对于传递 cstring 不正确,我该如何更正它?
  2. const的理解

更新了我上面的错误陈述,即当它应该是“第二个”时,我取消了“第一个”指针的引用。感谢您在下面指出这一点。

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

任何帮助是极大的赞赏。

-弗雷迪

4

1 回答 1

3

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

还:

const char const *

不合法(本杰明指出)。在这种情况下,两个consts 都适用于。char如果您希望指针为 const,则需要

char const * const

或者

const char * const

编辑:

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

问题 2)const绑定到左侧,除非左侧没有任何内容。所以const charchar const都是一样的。对于 const 指针,您需要* const,而不是const *.

于 2012-05-06T15:21:02.777 回答