Вектор C++ массива символов

Чтобы проверить правильность определенного поля, используйте:

$('#myField')[0].checkValidity(); // returns true/false

. Чтобы проверить, действительна ли форма, используйте:

$('#myForm')[0].checkValidity(); // returns true/false

Если вы хотите отобразить что некоторые браузеры имеют (например, Chrome), к сожалению, единственный способ сделать это - отправить форму, например:

var $myForm = $('#myForm');

if(! $myForm[0].checkValidity()) {
  // If the form is invalid, submit it. The form won't actually submit;
  // this will just cause the browser to display the native HTML5 error messages.
  $myForm.find(':submit').click();
}

Надеюсь, это поможет. Имейте в виду, что проверка HTML5 не поддерживается во всех браузерах.

24
задан aHunter 6 March 2010 в 01:34
поделиться

6 ответов

Вы не можете хранить массивы в векторах (или в любом другом стандартном контейнере библиотеки). Вещи, которые хранят стандартные библиотечные контейнеры, должны быть копируемыми и назначаемыми, и массивы не являются ни одним из них.

Если вам действительно нужно поместить массив в вектор (а вы, вероятно, этого не делаете - использование вектора векторов или вектора строк более вероятно, что вам нужно), то вы можете заключить массив в структуру:

struct S {
  char a[10];
};

, а затем создать вектор структур:

vector <S> v;
S s;
s.a[0] = 'x';
v.push_back( s );
68
ответ дан 28 November 2019 в 22:18
поделиться

Используйте std::string вместо массивов символов

std::string k ="abcde";
std::vector<std::string> v;
v.push_back(k);
2
ответ дан Prasoon Saurav 28 November 2019 в 22:18
поделиться

Вы можете напрямую определить вектор типа символа, как показано ниже.

vector<char> c = {'a', 'b', 'c'};
vector < vector<char> > t = {{'a','a'}, 'b','b'};
1
ответ дан MAOXU 28 November 2019 в 22:18
поделиться

FFWD к 2019. Хотя этот код worketh в 2011 также.

// g++ prog.cc -Wall -std=c++11
#include <iostream>
#include <vector>

 using namespace std;

 template<size_t N>
    inline 
      constexpr /* compile time */
      array<char,N> string_literal_to_array ( char const (&charrar)[N] )
 {
    return std::to_array( charrar) ;
 }

 template<size_t N>
    inline 
      /* run time */
      vector<char> string_literal_to_vector ( char const (&charrar)[N] )
 {
    return { charrar, charrar + N };
 }


int main()
{
   constexpr auto arr = string_literal_to_array("Compile Time");
   auto cv = string_literal_to_vector ("Run Time") ;
   return 42;
}

Совет: попытайтесь оптимизировать использование std::string. Для символа, буферизующего std::array<char,N>, является самым быстрым, std::vector<char> быстрее.

https://wandbox.org/permlink/wcasstoY56MWbHqd

0
ответ дан 28 November 2019 в 22:18
поделиться

Вам понадобится

char test[] = "abcde";  // This will add a terminating \0 character to the array
std::vector<std::string> v;
v.push_back(test);

Of, если вы хотели создать вектор символов вместо вектора строк,

std::vector<char> v(test, test + sizeof(test)/sizeof(*test));

Выражение sizeof ( test) / sizeof (* test) предназначен для вычисления количества элементов в массиве test.

11
ответ дан 28 November 2019 в 22:18
поделиться

Для этого можно использовать boost :: array :

boost::array<char, 5> test = {'a', 'b', 'c', 'd', 'e'};
std::vector<boost::array<char, 5> > v;
v.push_back(test);

Редактировать:

Или вы можете использовать вектор векторов, как показано ниже:

char test[] = {'a', 'b', 'c', 'd', 'e'};
std::vector<std::vector<char> > v;
v.push_back(std::vector<char>(test, test + sizeof(test)/ sizeof(test[0])));
2
ответ дан 28 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

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