ОБНОВИЛ - я предложу использовать предложение 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);
может быть более изящный способ сделать это, но вышеупомянутое действительно работает.
std :: string
имеет конструктор для этого:
const char *s = "Hello, World!";
std::string str(s);
Просто убедитесь, что ваш char *
не NULL
, иначе поведение не определено.
Если вы уже знаете размер char *, используйте вместо него
char* data = ...;
int size = ...;
std::string myString(data, size);
Это не использует strlen.
РЕДАКТИРОВАТЬ: Если строковая переменная уже существует, используйте assign ():
std::string myString;
char* data = ...;
int size = ...;
myString.assign(data, size);
Передайте его через конструктор:
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();
Мне нужно использовать std :: string для хранения данных, полученных с помощью fgets ().
Зачем использовать fgets ()
при программировании C ++? Почему не std :: getline ()
?