Массив символов в c# и c++
Массив символов в c# :
static char[] invalidСharacters = { '~', '@', '#', '$', '%', '^', '-', '_', '(', ')', '{', '}', '`', '+', '=', '[', ']', ':',
',', ';',',', '.', '/', '?','/','\\',':','*','?','«','»','<','>','|','&','—'};
Массив символов в c++ (использую Qt) :
static QStringList invalidСharacters ={ "~", "@", "#", "$", "%", "^", "-", "_", "(", ")", "{", "}", "`", "+", "=", "[", "]", ":",
",", ";",",", ".", "/", "?","/","\\",":","*","?","«","»","<",">","|","&","—"};
Вопрос: почему в c# - символы '«','»','—' = сосотоящие из нескольких одиночных символов - без проблем воспринимаются, как char и могут быть записаны, через одинарные кавычки, а в c++ - необходимо записывать такие символы, как строку (что, конечно, логично - т.к. там не один символ).
Т.е., по-сути, мой вопрос касается больше c# и сводится к заданому выше, и что, по сравнению с внутренним устройством c++ - позволяет так делать ?
Ответы (1 шт):
Автор решения: Антон
→ Ссылка
Потому что в C# тип char имеет размер 2 байта (https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/builtin-types/char), а в C++ 1 байт:
#include <iostream>
int main() {
std::cout << sizeof(char) << std::endl;
return 0;
}