писать А std::string
будет управлять собой и расти, чтобы приспособить вход, который дается в программе. Если у вас есть
std::string input;
std::getline(std::cin, input);
Это позволит получить информацию от пользователя, которая содержит пробелы, которые могут быть такими большими, как входной поток может удерживаться. Теперь, когда у вас есть строка, если вам нужно передать ее некоторой функции, для которой требуется старая строка c-style с нулевым завершением, вы должны использовать функцию c_str()
. c_str()
действительно возвращает const char *
, поэтому вы не сможете изменить строковые данные с ним.
Если вам действительно нужна modifyable строка с стилем, то вы можете сделать один с
char * old_style_string = new char[input.size() + 1];
std::strcpy(old_style_string, input.c_str());
определить «наиболее эффективными»? –
Если у вас в строке есть пробелы, вам нужно будет использовать ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline) – NathanOliver
наиболее эффективным я имею в виду вход с нулевым завершением. Является ли строка-объект нулевым, если я попрошу ввести пользователя, или мне придется добавить '\ 0' вручную? – trollpidor