首先,我根本不了解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 ++做什么。
也许这应该是一个单独的问题,但我也想打破分析,然后重新启动它以获得下一个数字块。
答案 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 ++读取空格分隔数组”。