ここに私の問題があります。次元が変化する 2 次元データがあり、それを double の 2D 配列に読み込みたいと考えています。さらに、ファイル内のいくつかのポイントでは、番号ではなく「NaN」があり、ゼロに置き換えたいと考えています。これまでコードを機能させましたが、整数しか読み取れませんでした。たぶん、ダブルスとして読むのを手伝ってもらえませんか?
これが私がこれまでに得たものです:
void READER(char filepath [], int target [129][128])
{
//---------------------------- header double & int
int rowA = 0;
int colA = 0;
std::string line;
std::string x;
std::cout << "reading file: " << filepath << "\n";
std::cout << std::endl;
std::ifstream fileIN;
fileIN.open(filepath);
if (!fileIN.good())
std::cerr << "READING ERROR IN FILE: " << filepath << std::endl;
while (fileIN.good())
{
while (getline(fileIN, line))
{
std::istringstream streamA(line);
colA = 0;
while (streamA >> x)
{
boost::algorithm::replace_all(x, "NaN", "0");
boost::algorithm::replace_all(x, ",", ""); //. rein
// std::cout << string_to_int(x) << std::endl;
target [rowA][colA] = string_to_int(x);
colA++;
}
rowA++;
if(rowA%5 ==0)
{
std::cout << "*";
}
}
}
std::cout << " done." <<std::endl;
}
これにより、ファイルが「ターゲット」に書き込まれます。int への関数文字列は次のようになります。
int string_to_int (const std::string& s)
{
std::istringstream i(s);
int x;
if(!(i >> x))
return 0;
return x;
}
ここにいくつかのサンプルデータがあります: