为什么我在字符串中存储字符串时只显示一个字符?

时间:2018-02-05 18:57:37

标签: c++

[我制作一个随机字生成器,所以我使用time.h库来使用srand并生成一个随机数...如果随机数= 0,那么char(principal)='hola'。 但是在CMD中只显示了最后一个字符:((对不起,我的英文不好)

enter image description here

代码是:

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main()
{
    int principal;
    char principal1;

    srand(time(NULL));

    principal = rand() % 2;

    if (principal == 0)
    {
        principal1 = 'hola';
        cout << principal1 << endl;
    }
    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

在C和C ++中,单引号(')表示“字符”(或一个字母/数字/符号)。两个单引号之间只能有一个字符。例如:

'c'
'9'
'?'
'\n'  // Newline character
'\0'  // Null character

双引号(“)表示”字符串“。字符串文字(在引号之间键入的字符串)将被视为末尾添加了空字符的字符数组。这种类型的字符数组被称为“c字符串”(不要与微软的“CString”混淆。

"Hi"  // Same as {'H', 'i', '\0'}
"Hello !\n"  // Same as {'H', 'e', 'l', 'l', 'o', ' ', '!', '\n', '\0'}

尝试将字符串放在单引号内通常不好。它将您带入一些weird territory实现(即编译器)特定行为。

如果要处理字符串“hola”,则应使用std::string对象来存储它。 (您可以使用char*,但我建议您使用std::string,直到您更好地了解这些差异。)