Почему каждые две строки оказываются в одной и той же ячейке?

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

У меня есть документ .csv со следующим макетом.

Ячейка А1: Title1, Заголовок 2, TITLE3, …
CELL A2: Дата1, Name1, Данные11, Data12, Data13, …
Клетка A3: Дата2, Name2, Data21, Data22, Data23, …

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

Проблема в том, что в первой ячейке эти строки текста записываются парами, в то время как все они должны иметь свою собственную строку. Я пытался писать в .txt файлы, и никаких проблем не было найдено. Выглядит так:
Ряд 1: A: Название 1 B: Название 2 C: Название 3 …
Строка 2: A: Дата1, Имя1, Данные11, Данные12, Данные13, Дата2 B: Имя2 C: Данные21 D: Данные22 …

Мой CSV использует точку с запятой («;») в качестве разделителя.

Это код до сих пор (я пытался переместить как можно больше бесполезного контента):

#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <algorithm>

using namespace std;

int main(){
//Name of the rooms to be extracted
char *row2keep[] = {"Name1","Name2"};
//Number of the rows to be extracted
int col2keep[] = {1,2,3,4,5};
ifstream  data("Nameoffile.csv");

string  line;
string  cell;
int     col = 0;
int     row = 0;
ofstream outdata;
outdata.open("sorting.csv", ios::app);

while(getline(data,line)){
col = 0;
row ++;
stringstream  lineStream(line);
while(getline(lineStream,cell,',')){
col ++;
for(int c = 0; c < 5; ++c){
if(col2keep[c] == col){
replace(cell.begin(),cell.end(),'.',',');
cout << cell << ";";
outdata << cell << ";";
}
}
}
cout << "\n";
outdata << "\n";
}
data.close();
outdata.close();
return 0;
}

Кажется, проблема в том, что цикл for () в последнем цикле while () каким-то образом портится с ofstream, потому что когда я его удаляю, все восемь строк оказываются одна за другой в разных строках без проблем.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector