char []和c ++中的字符串有什么区别?

时间:2013-10-31 16:46:40

标签: c++ arrays string char

我习惯用Java编程,现在正在做一些涉及一点点C ++的事情。

我实际上并没有学习C ++,实际上我正在使用汇编代码,它是我不知道的C ++部分。

我查看了我讲师(大学)的过去代码,并定义了一个包含我(作为Java开发人员)会调用String的变量,他将其声明为char [](我认为这意味着char /字符数组)。

char get1[] = "Give me the first number:";

C ++是否使用char数组来表示字符串或它们是否不同?

对于我使用的极其有限的C ++,我应该假设它们是相同的并且使用char数组作为我的讲师吗?

我将使用此字符串将其作为特定点打印到屏幕上(如果你们中的任何人知道intel x86程序集,则使用printf)。我应该使用char数组吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

std::string是一个具有功能的类。 char数组就是 - 一个字符数组。

您可以通俗地将空终止的char数组(例如您的示例)调用为C风格的字符串,但这只是一个名称。

答案 1 :(得分:1)

Char数组肯定是一种字符串--c ++程序员和API文档经常将char数组称为“c字符串”或“c样式字符串”(以区别于CStrings,这是一个微软的概念,完全是一些东西)不同)。

关于c ++作为一种语言最令人讨厌的事情之一就是它没有将单个字符串概念定义为语言的本机概念,因此有许多构造都可以实现字符串。 std :: string(或者,如果你使用unicode,你应该,std :: wstring)是最常见的实现,是跨平台和 basically 语言的一部分如果您使用Microsoft代码,您还会看到调用BSTR,_bstr_t,CComBSTR和CString类型字符串的API - 所有这些都是字符串类型!

一般情况下,如果给出选择,我会使用std :: [w]字符串,并根据需要将字符串转换为(w)字符数组 - 尽管如果你的字符串操作非常简单,那么你的输出就是无论如何必须是一个c-string,用c-strings来做所有事情并不奇怪。