[英]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”。
更新-
只是为了澄清这是一个两部分的问题。
更新了我上面的错误陈述,即当它应该是“第二”指针时,我取消了对“第一”指针的引用。 下面感谢您指出这一点。
第二次更新-我正在使用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 char
和char const
是相同的。 对于const指针,您需要* const
,而不是const *
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.