Мне нужно добавить запятую в каждую строку, хранящуюся в массиве, в соответствии с position
, которая хранится в byteSizeBuffer
.Добавление запятых к набору строк, хранящихся в массиве
std::string::iterator it;
int position = 0;
int totalSize = 0;
for (int i = 0; i < numOfMPs+1; i++)
{
for (int j = 0; j < numOfMPs; j++)
{
if(totalSize < subSize)
{
switch(byteSizeBuffer[j]) {
case 2:
position = totalSize+4; //4 because in the string each byte is 2 characters (2*2=4)
totalSize = position;
it = sub_[i].begin()+position, ','; //inserts comma at iterator+position
break;
case 4:
position = totalSize+8;
totalSize=position;
it = sub_[i].begin()+position, ',';
break;
default:
cout << "An error has occured while splitting the Data";
break;
}
}
}
}
- Положения является положением, которое я хочу запятая должна быть вставлена.
- TotalSize это сумма позиций и не может превышать subSize
- subsize всегда и даже число и всегда 34 байт ~ 68 символов
- Запятые добавляются к одной и той же позиции для каждого строки в массиве.
Строки выглядеть следующим образом: FG454F3423T5245G4G5H6546456Y54645G4456G45G60101000000101010111000001
The позиций, хранящихся в bytesizeBuffer [] сохраняются в виде либо 2 или 4, которые представляют собой число байтов.
Так что если сохраненные цифры были 4,4,4,4,2,4,4,2,2,2,2, мне нужно, чтобы это выглядело так: FG454F34,23T5245G, 4G5H6546,456Y5464,5G44,56G45G60 , 10100000,0101,0101,1100,0001 .......... Никакой запятой не следует добавлять в конце строки.
Мой вышеприведенный код, похоже, не работает, и мне было интересно, правильно ли я это делал или, возможно, был более эффективный способ сделать это.
Только несколько советов/указателей, чтобы получить меня на правильном пути, действительно то, что я ищу. Thanks
Просто проведите по строкам 'bytesizeBuffer', построив вторую строку из первой. Я понятия не имею, почему вы думаете, что вам нужен вложенный цикл! – Roddy
'it = sub_ [i] .begin() + position, ','; // вставляет запятую в iterator + position'. Помимо определения нового значения 'it', это ничего не делает. – Roddy
@Roddy У меня есть 2 массива. первая содержит несколько строк, а вторая содержит несколько позиций, в которых запятые должны идти. Поэтому первый цикл проходит через массив строк, а второй - через byteSizeBuffer (или массив позиции). – tc90