如何分配字符串文本
How to assign a string literal
我是一名Java程序员;我上一次写C或C++是在20年前。现在我回来了,我正在尝试使用更现代的C++,例如 C++11/C++14,并避免旧的 c 风格编程。
如何分配字符串,就像在 Java 中一样:
private static final String MY_STRING = "Hello World"; // could also be public
现在我有了对文本"Hello World"
MY_STRING
的引用,我可以在我的程序中根据需要多次使用,如果我想将其更改为"Hello Dolly"
,我完全在一个地方进行更改。
我想在C++实现同样的目标。 例:
JavaVMOption* options = new JavaVMOption[1];
options[0].optionString = (char *)"-Djava.class.path=.";
这有效,没有更多的问题,但我不喜欢它,因为要求只有在需要时才能够在一个地方更改它。 所以,我声明(即使在头文件中):
std::string classpath = "-Djava.class.path=.";
// or
const std::string classpath = "-Djava.class.path=.";
我将其用作:
options[0].optionString = (char *)classpath.c_str();
现在,使用c_str()
函数,这也可以工作,但我又回到了普通的旧 C!
我真的很想知道是否有办法保持在更现代的C++水平?
是的,我明白
JavaVMOption* options = new JavaVMOption[1];
按原样声明,我无法更改它。但即使在C++,在给定的情况下使用引用而不是指针也是一个好主意,就像在 Java 中一样。有解决办法吗?我找不到。
"Hello"
分别是值 6char
的常量缓冲区H
e
l
l
o