Это точно правильно, потому что компилятор должен знать, какой тип он предназначен для распределения. Поэтому классы шаблонов, функции, перечисления и т. Д. Должны быть реализованы также в файле заголовка, если он должен быть опубликован или частично из библиотеки (статический или динамический), поскольку файлы заголовков НЕ скомпилированы в отличие от файлов c / cpp, которые находятся. Если компилятор не знает, что тип не может его скомпилировать. В .Net это возможно, потому что все объекты происходят из класса Object. Это не .Net.
Вы можете получить доступ к переменной «N» или 3 символам перед i, выполнив:
for i,str in enumerate(myString):
if str == "7":
myList.append(myString[i-3])
Перечисление начнется с i = 0 и будет добавлять 1 к i каждый раз, когда цикл будет продолжаться, но я посоветую вам добавить условие, чтобы избежать отрицательного числа, и ошибку в myString[i-3]
, например:
for i,str in enumerate(myString):
if (i > 2 and str == "7"):
myList.append(myString[i-3])
Не уверен, что я получаю то, что вы спрашиваете здесь. Если вам нужен самый высокий индекс, где буква «N» присутствует в вашей строке, str.rfind()
и str.rindex()
созданы именно для этого. Единственное различие между ними: rfind
вернет -1 в случае сбоя, rindex
повысит ValueError
. Или, если вы хотите вернуться назад и добавить буквы в список, начиная с конца строки:
a_list = []
a_string = 'this is a string'
for i in range(len(a_string)-1, -1, -1) :
a_list.append(a_string[i])
print(a_list)
['g', 'n', 'i', 'r', 't', 's', ' ', 'a', ' ', 's', 'i', ' ', 's', 'i', 'h', 't']
Просто зациклите строку от последнего индекса до первого и получите нужный элемент.
myString = "this is my striNg 7";
for (i = myString.length - 1; i > 0; i--) {
if(myString[i]=='N'){
console.log('index of N is ' +i);
}
}