使用c ++将空格分隔值文本转换为.csv,然后保存

时间:2018-02-09 12:19:27

标签: c++ ascii export-to-csv save-as filesaver.js

如何使用c ++将.asc文件(空格分隔值)转换为.csv文件,然后将其保存为pc或android上的.csv文件。

注意:此.asc文件用于srtm数据,因此它很大,是3600行和3600列。 请不要像excel这样的软件。 我在谷歌搜索但没有结果

修改

参见图,查看示例1

.asc文件:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 3 3 3 4 4 5 5 4 5 5 6 6 6 6 5 5 4 3 3 2 3 5 6 7 7 8 9 10 10 10 11 12 11 10 10 11 13 14 14 14 13 13 12 12 11 11 11 11 11 10 10 10 10 10 11 11 13 14 13 13 13 14 14 14 14 14 15 15 14 14 14 15 15 14 14 16 17 18 20 23 27 31 32 35 38 41 43 44 46 47 48 50 50 49 49 50 51 51 54 55 56 58 59 59 61 62 62 62 61 58 54 53 52 52 51 51 53 54 53 51 50 50 49 49 50 51 52 53 53 52 51 51 52 57 62 61 59 57 57 57 60 60 60 59 58 58 58 58 57 57 57 61 63 64 62 -32768  新线 和其他数字遵循由空格隔开的相同patttern数据数

注意 它看起来像图

我知道如此:

#include <iostream>
#include <fstream>
using namespace std;

int main () {

  ofstream file;

  file.open ("example.txt");

  file << "Please write this data to a file using C++\n";

  file.close();

  return 0;

}

但不读取然后转换

1 个答案:

答案 0 :(得分:0)

我已经创建了一个小型的C ++程序来解决你的需求。

int main()
{
   std::ifstream ascfile;
   std::ofstream csvFile;
   ascfile.open("source.asc");
   csvFile.open("output.csv");

    if (ascfile.is_open())
        {
            std::string line;
            while(std::getline(ascfile, line))
            {
                int p = 0;
                while ((p = line.find(' ', p)) != std::string::npos)
                {
                   line.insert(p, ",");
                   p += 2;
                }
                 csvFile << line <<std::endl;
            }

        }
        else
        {
            std::cout << "Sorry, the file could not be openend." << std::endl;
            return -1;
        }
   ascfile.close();
   csvFile.close();
   return 0;
}

添加头文件iostream,fstream,string

嗨我修改了上面的程序,如上面的程序不要替换空间使用下面的程序而是必须添加头文件: -

int main()
{
   std::ifstream ascfile;
   std::ofstream csvFile;
   ascfile.open("source.asc");
   csvFile.open("output.csv");

    if (ascfile.is_open())
        {
            std::string line;
            while(std::getline(ascfile, line))
            {
                std::replace( line.begin(), line.end(), ' ', ',');
                csvFile << line <<std::endl;
            }

        }
        else
        {
            std::cout << "Sorry, the file could not be openend." << std::endl;
            return -1;
        }
   ascfile.close();
   csvFile.close();
   return 0;
}