Я пытаюсь прочитать текстовый файл построчно, а затем прочитать каждый столбец как вектор, но когда я пытаюсь нацелиться на первый столбец, он показывает нули, то есть неправильно читает файл.
int main(void)
{ifstream myfile ("data1.txt");
string line;if (myfile.is_open())
{
int ln=1;
while ( getline (myfile,line) )
{
if(ln==1){ln++; continue;}
istringstream iss(line);
string word;
vector<double> column;
int w=1;
while(iss >> word)
{
//double dw=atof(Form("%s",word));
column.push_back(atof(Form("%s",word)));
cout<<column[0];
w++;}
ln++;
cout<<"\n";
}
myfile.close();
}
//else
else cout<<"Unable to open file";
cout<<"\n";
return ;
}enter code here
push_back
добавляет элемент как последний элемент вектора, в то время как columns[0]
всегда относится к первому элементу вектора.
Это первый элемент 0
Есть ли другая проблема?
(Пожалуйста, объясните, что это такое Form
приведите пример ввода файла и вывода в командной строке)
Прежде всего научитесь делать отступы и последовательно использовать некоторую схему для вставки пустых строк, что имеет смысл. Когда вы сделаете это, вы сможете прочитать свой собственный код и выяснить, делает ли он то, что вы думаете.
Во-вторых. Сохранить форму («% s», слово) в строке (сейчас назовите ее form_string) добавить эту строку cout<<"form returns "<<form_string<<endl;
99,99%, вероятно, будет печатать нули.
Наконец изменить: cout<<column[0];
в cout<<column[0]<<" ";
или же cout<<*(column.rbegin())<<" ";
, Последний печатает все значения, которые вы прочитали, первый печатает первое значение, которое вы читаете снова и снова.