C ++读取未知行数并将值存储在数组中

时间:2016-09-27 21:31:50

标签: python c++ arrays

首先,我根本不了解C ++。基本上我有一个看起来像

的文件
$myObject = buildObject('MyClassName',$myArray);

我想分别分析每个数字块。即在这里,我有两个数字块,并希望分别对它们进行相同的分析。

我知道如何在Python中实现它,我只是不知道它在C ++中的外观。

junk
junk
...
junk
 3    4    5    1
-9    7    4   -7
 8    6    3    1
....
junk
junk
 7    5    2    -1
....
-1    7    4     1
etc.

我还想对数字块进行分析,同时比较两条线的所有可能性。在Python中它看起来像(我猜 - 没试过):

file = open('data.text')
w = []     
x = []
y = []
z = []

for line in file:
  line = line.strip()
  data = line.split()
  w.append(data[0])
  x.append(data[1])
  y.append(data[2])
  z.append(data[3])
file.close()

以下是使用C ++尝试此问题时的一些问题:我不知道数据的行数(称之为n),尽管我知道我想要的数字块数分析(称之为N - 在我的例子中N = 2)。而且有很多分段错误。我想我可以存储数据,但我似乎无法称之为。我创建了一个类数据数据并从那里开始工作。

r = []
s = []
t = []
for i in range(len(w)):
  for j in range(len(w) - 1):
    r.append(w[i]*x[j] - w[j]*x[i])
    s.append(x[j]*y[i] - y[j]*x[i])

for i in range(len(w):
  for j in range(len(s)):
    t.append(s[j]*w[i] + r[j]*x[i])
best = min(t)

但我再也不知道我在用C ++做什么。

也许这应该是一个单独的问题,但我也想打破分析,然后重新启动它以获得下一个数字块。

1 个答案:

答案 0 :(得分:1)

要从文件中读取未知数量的文本行,请使用动态容器。

std::string text_line;
std::vector<std::string> file_text;
while (std::getline(data_file, text_line))
{
  file_text.push_back(text_line);
}

这不是最有效的方法。

对于一种有效的方法,问问自己是否必须将所有行读入内存。大多数应用程序不需要;他们可以一次阅读一行并进行处理。

研究还包括:“内存映射”,“双缓冲”和“将文本文件读入缓冲区”。

另一个搜索:“c ++读取空格分隔文本文件号”或“c ++读取空格分隔数组”。