#c #string #stream #ifstream #ofstream
#c #строка #поток #ifstream #ofstream
Вопрос:
У меня есть следующий код на c , с помощью которого я считываю значения из .txt-файла
Не могли бы вы, пожалуйста, помочь мне улучшить код таким образом, чтобы я мог читать не только 14 значений, но и n значений из .txt
//reading from text file
static std::vector<double> vec;
double a[14]; //values got read from txt file
int i = 0;
void readDATA()
{
double value;
std::ifstream myFile;
myFile.open("filename.txt", std::ios::app);
if (myFile.is_open())
{
std::cout << "File is open." << std::endl;
while (myFile >> value)
{
vec.push_back(value);
std::cout << "value is " << value << std::endl;
a[i] = value;
std::cout << "a" << i << "=" << a[i] << std::endl;
i = i 1;
}
myFile.close();
}
else
std::cout << "Unable to open the file";
}
файл .txt выглядит следующим образом
0 0 40 45 15
0 1 40 -45 10
0 0 180 90 15
Комментарии:
1. После увеличения
i
вы можете добавитьif ( i == n) break;
, предполагая, что у вас естьn
переменная, а n больше 0.2. @drescherjm Спасибо за ваш комментарий, но как мне тогда установить [] ?! не могли бы вы уточнить это подробнее
3. Я даже не уверен, почему у вас есть
a
переменная, поэтому трудно предположить, что с этим делать.4. Точно, a бесполезно
Ответ №1:
vec.push_back(value);
Здесь значения уже добавлены vec
, вам не нужно добавлять их a
снова. Вы можете просто получить доступ к этим значениям, введя vec[n]
. Например,
std::cout<<vec[2]; //40
std::cout<<vec[4]; //15
И вы можете перенести в векторы столько элементов, сколько захотите, поэтому вам действительно не нужно объявлять другой массив или удвоения.
Комментарии:
1. спасибо за ваш ответ. полностью логично и правильно