繁体   English   中英

C ++将C样式的字符串作为参数传递

[英]C++ Passing C-style string as argument

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

例如

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

然后在主要方法。

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

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

另外,为了确保我对const的理解是正确的, const char *说“此指针指向const char”,而const char const *说“此指针地址不能更改,并且它指向的地址是” const”。

更新-

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

  1. 如果示例中的构造函数不适合传递cstring,如何纠正它?
  2. 了解const

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

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

任何帮助是极大的赞赏。

-弗雷迪

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 *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM