我希望並想知道是否有人可以幫助我理解如何在C++中執行以下操作: 使用命令行輸入重定向將文件內容存儲到2 -d數組。從文件中讀取數據並將數據存儲在C++中
這些文件將有3列未知的行數。 像這樣: 20 42 0.00 15 67 2.41 70 53 9.88
所以陣列需要由能夠保持陣列的x個。 X是文件中的行數。每個內部數組將保存該行的一列。
我不知道如何做到這一點,但我會真誠地感謝任何和所有的幫助和方向如何做到這一點。
在此先感謝&最好的問候!
我希望並想知道是否有人可以幫助我理解如何在C++中執行以下操作: 使用命令行輸入重定向將文件內容存儲到2 -d數組。從文件中讀取數據並將數據存儲在C++中
這些文件將有3列未知的行數。 像這樣: 20 42 0.00 15 67 2.41 70 53 9.88
所以陣列需要由能夠保持陣列的x個。 X是文件中的行數。每個內部數組將保存該行的一列。
我不知道如何做到這一點,但我會真誠地感謝任何和所有的幫助和方向如何做到這一點。
在此先感謝&最好的問候!
由於這看起來像作業這裏是一些基本的提示。
可以指示一個命令的輸出作爲另一個使用管道的像輸入:然後
cat myfile.txt | myprogram
myprogram
可以讀取使用cin
的數據。
這應該足以讓你開始。
是的,這是作業。 如何使用cin讀取數據? – IrfanM
static const size_t START_SIZE = 100;
//allocate array of pointers
double** flt_arr = new double*[START_SIZE];
size_t current_size = START_SIZE;
size_t current_index = 0;
while (!cin.eof())
{
double flt1, flt2, flt3;
cin >> flt1 >> flt2 >> flt3;
//check stream for bad read
if (cin.fail())
{
cerr << "Input error on line " << current_index + 1 << "!" << endl;
break;
}
if (current_size == current_index)
{
//grow array
current_size += START_SIZE;
double** tmp_arr = new double*[current_size];
for (size_t count = 0; count < current_index; count++)
{
tmp_arr[count] = flt_arr[count];
}
delete [] flt_arr;
flt_arr = tmp_arr;
}
//allocate row for current line
flt_arr[current_index] = new double[3];
flt_arr[current_index][0] = flt1;
flt_arr[current_index][1] = flt2;
flt_arr[current_index][2] = flt3;
current_index++;
}
//clean up rows
for (size_t count = 0; count < current_index; count++)
{
delete [] flt_arr[count];
}
//clean up array of pointers
delete [] flt_arr;
究竟是什麼你不知道該怎麼辦?如何從文件中讀取?如何放入數組?如何使用命令行輸入重定向? – amit
@amit嗯,可以使用for循環將內容放入數組中,對嗎?其餘的我不知道該怎麼做。 – IrfanM