Нам нужно увидеть больше, чем это; Мы должны быть в состоянии воспроизвести проблему. И вы нигде не используете ключевое слово index
в своем скрипте!
При этом я должен подчеркнуть, что следующее не фактическое решение.
Поскольку я не делаю jQuery - я попытаюсь продемонстрировать возможное решение для вас, используя чистый JavaScript, также будучи (пере) маркированным как Vanilla .:
[].slice.call(
document.querySelectorAll('figure')
).
forEach(
function( x ) {
x.onclick = function( ) { /*reg fig clicked here*/
recentlyViewed.innerHTML =
this.getAttribute('src')+", "+ this.getAttribute('data-square');
};
}
);
мы предполагаем, что здесь :: 1. цифра, по которой щелкают, должна получить регистрацию события щелчка, связанную с функцией, которая предположительно: 1.a) отдает свой URL-адрес контента вместе с некоторым пользовательским содержимым атрибута квадрата данных. 2. также предполагая, что «недавно просмотренный» - это идентификатор целевого содержимого HTML, подлежащего перезаписи.
C++ действительно требует, чтобы реализация только обеспечила явные специализации для двух версий символьных черт:
std::char_traits<char>
std::char_traits<wchar_t>
Потоки и строки используют те черты для выяснения множества вещей, как значение EOF, сравнение диапазона символов, расширения символа к интервалу и такого материала.
Если Вы инстанцируете потока как
std::basic_ifstream<unsigned char>
Необходимо удостовериться, что существует соответствующая символьная специализация черты, которую поток может использовать и что эта специализация действительно делает полезные вещи. Кроме того, потоки используют фасеты, чтобы сделать фактическое форматирование и чтение чисел. Аналогично необходимо обеспечить специализации тех слишком вручную. Стандарт даже не требует, чтобы реализация имела полное определение основного шаблона. Таким образом, Вы могли также получить ошибку компиляции:
ошибка: станд. специализации:: char_traits нельзя было инстанцировать.
Я использовал бы ifstream
вместо этого (который является a basic_ifstream<char>
) и затем пойдите и читайте в a vector<char>
. При интерпретации данных в векторе можно все еще преобразовать их в unsigned char
позже.
Не используйте basic_ifstream, поскольку он требует specializtion.
Используя статический буфер:
linux ~ $ cat test_read.cpp
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main( void )
{
string filename("file");
size_t bytesAvailable = 128;
ifstream inf( filename.c_str() );
if( inf )
{
unsigned char mDataBuffer[ bytesAvailable ];
inf.read( (char*)( &mDataBuffer[0] ), bytesAvailable ) ;
size_t counted = inf.gcount();
cout << counted << endl;
}
return 0;
}
linux ~ $ g++ test_read.cpp
linux ~ $ echo "123456" > file
linux ~ $ ./a.out
7
использование вектора:
linux ~ $ cat test_read.cpp
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main( void )
{
string filename("file");
size_t bytesAvailable = 128;
size_t toRead = 128;
ifstream inf( filename.c_str() );
if( inf )
{
vector<unsigned char> mDataBuffer;
mDataBuffer.resize( bytesAvailable ) ;
inf.read( (char*)( &mDataBuffer[0]), toRead ) ;
size_t counted = inf.gcount();
cout << counted << " size=" << mDataBuffer.size() << endl;
mDataBuffer.resize( counted ) ;
cout << counted << " size=" << mDataBuffer.size() << endl;
}
return 0;
}
linux ~ $ g++ test_read.cpp -Wall -o test_read
linux ~ $ ./test_read
7 size=128
7 size=7
использование резерва вместо изменяет размер в первом вызове:
linux ~ $ cat test_read.cpp
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main( void )
{
string filename("file");
size_t bytesAvailable = 128;
size_t toRead = 128;
ifstream inf( filename.c_str() );
if( inf )
{
vector<unsigned char> mDataBuffer;
mDataBuffer.reserve( bytesAvailable ) ;
inf.read( (char*)( &mDataBuffer[0]), toRead ) ;
size_t counted = inf.gcount();
cout << counted << " size=" << mDataBuffer.size() << endl;
mDataBuffer.resize( counted ) ;
cout << counted << " size=" << mDataBuffer.size() << endl;
}
return 0;
}
linux ~ $ g++ test_read.cpp -Wall -o test_read
linux ~ $ ./test_read
7 size=0
7 size=7
Как Вы видите без вызова к (считаемому) .resize, размер вектора будет неправильным. Имейте это в виду. это - общее для использования кастинга, см. cppReference
Намного более легкий путь:
#include <fstream>
#include <vector>
using namespace std;
int main()
{
vector<unsigned char> bytes;
ifstream file1("main1.cpp", ios_base::in | ios_base::binary);
unsigned char ch = file1.get();
while (file1.good())
{
bytes.push_back(ch);
ch = file1.get();
}
size_t size = bytes.size();
return 0;
}