Какой тип данных для строки?
Скорее всего, это очень глупый вопрос, но в C++, каков тип данных для строки? Я хочу сделать переменную x = "Slim Shady".
Я объявил бы x как int? Я попытался объявить его как символ, но когда я перебираю переменную, он дает только первую букву. Любая помощь будет оценена.
4 ответа
Вы должны включить строку заголовочного файла
#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++
std::string
это лучшая ставка. Но вы также можете использовать auto
, как в auto x = "Slim Shady!";
, Это означает, что вам не нужно выяснять тип, чтобы использовать выражение.
"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]
, Это легко объяснить, поскольку при передаче массива чего-либо в функцию - он преобразуется в константный указатель.