преобразуйте символ* в станд.:: строка

ОБНОВИЛ - я предложу использовать предложение Rune ниже, а не этой опцией!

<час>

я предполагаю, что Вы хотите что-то как выполнение до конца размолвкой:

<select name="blah">
    <option value="1">Movie</option>
    <option value="2">Game</option>
    <option value="3">Book</option>
</select>

, который Вы могли сделать с дополнительным методом что-то как следующее:

public static string DropdownEnum(this System.Web.Mvc.HtmlHelper helper,
                                  Enum values)
{
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    sb.Append("<select name=\"blah\">");
    string[] names = Enum.GetNames(values.GetType());
    foreach(string name in names)
    {
        sb.Append("<option value=\"");
        sb.Append(((int)Enum.Parse(values.GetType(), name)).ToString());
        sb.Append("\">");
        sb.Append(name);
        sb.Append("</option>");
    }
    sb.Append("</select>");
    return sb.ToString();
}

, НО вещи как это не локализуемы (т.е. будет трудно перевести на другой язык).

Примечание: необходимо назвать статический метод с экземпляром Перечисления, т.е. Html.DropdownEnum(ItemTypes.Movie);

может быть более изящный способ сделать это, но вышеупомянутое действительно работает.

230
задан Arnav Borborah 26 March 2018 в 12:57
поделиться

5 ответов

std :: string имеет конструктор для этого:

const char *s = "Hello, World!";
std::string str(s);

Просто убедитесь, что ваш char * не NULL , иначе поведение не определено.

338
ответ дан 23 November 2019 в 03:41
поделиться

Если вы уже знаете размер char *, используйте вместо него

char* data = ...;
int size = ...;
std::string myString(data, size);

Это не использует strlen.

РЕДАКТИРОВАТЬ: Если строковая переменная уже существует, используйте assign ():

std::string myString;
char* data = ...;
int size = ...;
myString.assign(data, size);
115
ответ дан 23 November 2019 в 03:41
поделиться
char* data;
std::string myString(data);
0
ответ дан 23 November 2019 в 03:41
поделиться

Передайте его через конструктор:

const char* dat = "my string!";
std::string my_string( dat );

Вы можете использовать функцию string.c_str (), чтобы пойти другим путем:

std::string my_string("testing!");
const char* dat = my_string.c_str();
13
ответ дан 23 November 2019 в 03:41
поделиться

Мне нужно использовать std :: string для хранения данных, полученных с помощью fgets ().

Зачем использовать fgets () при программировании C ++? Почему не std :: getline () ?

28
ответ дан 23 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: