Какой тип данных для строки?

Скорее всего, это очень глупый вопрос, но в C ++, какой тип данных для строки? Я хочу сделать переменную x = «Slim Shady».

Я объявил бы x как int? Я попытался объявить его как символ, но когда я cout переменная, он дает только первую букву. Любая помощь будет оценена.

0

Решение

Вы должны включить строку заголовочного файла

#include <string>

Тогда вы сможете использовать std :: string

std::string x="Slim Shady"

http://en.cppreference.com/w/cpp/string/basic_string

Вы также не можете использовать std :: strings, если вы не хотите их использовать, хотя они являются вашим лучшим вариантом

Вы можете использовать массивы Char или указатель char (C-строки)

char x[]="Slim Shady";

или же

char* x="Slim Shady";

Ключевое слово auto является функцией C ++ 0x. Вы должны держаться подальше от этого, пока вы не изучите основы C ++

4

Другие решения

std::string это лучшая ставка. Но вы также можете использовать auto, как в auto x = "Slim Shady!";, Это означает, что вам не нужно выяснять тип, чтобы использовать выражение.

3

«Slim Shady» — это постоянный буквальный тип char[11] который конвертируется в const char*, Вы также можете использовать его для инициализации любых массивов символов больше 11. См .:

char a[] = "Slim Shady";
char a[11] = "Slim Shady";
const char* a = "Slim Shady";
char a[12] = "Slim Shady";

Посмотрите этот маленький код:

#include <typeinfo>
#include <iostream>

template <class T>
void printTypeName(T t)
{
std::cout << typeid(T).name() << std::endl;
}

int main() {
printTypeName("Slim Shady");
printTypeName<decltype("Slim Shady")>("Slim Shady");
}

Вы получаете (на GCC) искромсанный имена:

PKc
A11_c

Из того, что я знаю — первое const char* второй char[11], Это легко объяснить, поскольку при передаче массива чего-либо в функцию — он преобразуется в константный указатель.

2

Вы просто имеете в виду:

std::string x = "Slim Shady";
1
По вопросам рекламы [email protected]