Как прочитать n значений из текстового файла с помощью C

#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. спасибо за ваш ответ. полностью логично и правильно