C++ 如何检测将文本文件读入int数组的新行

C++ 如何检测将文本文件读入int数组的新行,c++,C++,101 175 123 52 78 184 202 8 219 15 49 254 86 62 156 213 41 200 123 131 252 186 108 116 39 205 243 120 218 239 201 109 52 173 244 58 185 18 64 209 165 222 81 136 247 149 183 206 164 214 179 121 176 200 89 128 我正在将数字文本文件读入动态分配的整数数组。我不知道如何在将数字读入int数据类型“

101 175 123 52 78 184 202 8 219 15 49 254 86 62

156 213 41 200 123 131 252 186 108 116 39 205 243 120

218 239 201 109 52 173 244 58 185 18 64 209 165 222

81 136 247 149 183 206 164 214 179 121 176 200 89 128

我正在将数字文本文件读入动态分配的整数数组。我不知道如何在将数字读入int数据类型“while(num!='\n')”时检测换行符。这是我迄今为止尝试过的。虽然我知道我们不能将字符读入int数据类型变量,但我不确定如何解决这个问题

#include<iostream>
#include<fstream>
using namespace std;
int  main()
{
   int num=0; 
   int size=0;
   int* ptr=nullptr;
   ifstream fin;
   fin.open("numbers.txt");
   while(fin>>num)
   {
      while(num!='\n')
      {
         int* nptr=new int[size+1];
         for(int i=0; i<size; i++)
         {
            nptr[i]=ptr[i];
         }

         nptr[size++]=num;
         ptr=nptr;
         delete[] nptr;
         nptr=nullptr;
         fin>>num;
      }


   }
   for(int i=0; i<size; i++)
   {
      cout<<ptr[i]<<endl;
   }
}
#包括
#包括
使用名称空间std;
int main()
{
int num=0;
int size=0;
int*ptr=nullptr;
流鳍;
财务公开(“numbers.txt”);
而(fin>>num)
{
而(num!='\n')
{
int*nptr=新int[size+1];
对于(int i=0;i>num;
}
}

对于(inti=0;i来说,一种常见的方法是逐行读取文件,然后使用istringstream解析一行

同样,当你使用C++时,STD::向量比指针容易出错的指针更适合这个目的。 示例如下所示:

ifstream fin;
fin.open("numbers.txt");

std::string line;
std::vector<std::vector<int>> mat; // use vector of vector instead of pointer to pointer
while (std::getline(fin, line))    // read line-by-line
{
    cout << line << "\n";

    std::istringstream iss(line);  // then process each line separately
    int x;
    std::vector<int> row;
    while (iss >> x)
    {
        cout << x << '\t';
        row.push_back(x);
    }
    mat.push_back(row);
    cout << '\n';
}


// Check the output content
for( const auto &row : mat )
{
    for( const auto &x : row )
    {
        cout << x << '\t';
    }
    cout << '\n';
}
ifstream-fin;
财务公开(“numbers.txt”);
std::字符串行;
std::vector mat;//使用向量的向量,而不是指向指针的指针
while(std::getline(fin,line))//逐行读取
{
库特(x)
{

cout这将不起作用,因为
运算符>>
不会将字符
\n
加载到
int
类型的变量中。请查看并尝试逐行读取文件。然后可以拆分字符串(以空格作为分隔符)