使用 C++ 将 space 分隔值文本转换为 .csv,然后保存
Convert space separated value text to .csv with c++ then save it
如何用c++将.asc文件(space分隔值)转换为.csv文件,然后在pc或android.
上保存为.csv文件
注意:这个.asc文件是srtm数据,所以比较大,有3600行3600列。
请不要使用 excel 之类的软件。
我在 google 中搜索但没有结果
编辑
看图看例子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 10 11 11 13 14 13 13 13 14 14 14 14 14 14 14 15 15 14 14 16 17 18 20 23 27 31 32 35 38 41 43 44 44 46 47 47 48 50 50 49 49 49 49 49 51 51 51 51 51 55 56 58 59 59 59 59 59 61 62 62 62 62 62 61 58 54 53 52 52 52 52 52 52 51 51 51 51 51 53 51 54 51 53 51 51 51 51 51 51 51 51 51 51 51 51 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
然后换行
和其他数字遵循相同的数据模式 spaced by a space
备注
如图所示
我就知道了:
#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;
}
但不是阅读然后转换
我已经创建了一个小的 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
您好,我修改了上面的程序,因为上面的程序没有替换 space,而是使用下面的程序,但必须添加头文件:-
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;
}
如何用c++将.asc文件(space分隔值)转换为.csv文件,然后在pc或android.
上保存为.csv文件注意:这个.asc文件是srtm数据,所以比较大,有3600行3600列。 请不要使用 excel 之类的软件。 我在 google 中搜索但没有结果
编辑
看图看例子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 10 11 11 13 14 13 13 13 14 14 14 14 14 14 14 15 15 14 14 16 17 18 20 23 27 31 32 35 38 41 43 44 44 46 47 47 48 50 50 49 49 49 49 49 51 51 51 51 51 55 56 58 59 59 59 59 59 61 62 62 62 62 62 61 58 54 53 52 52 52 52 52 52 51 51 51 51 51 53 51 54 51 53 51 51 51 51 51 51 51 51 51 51 51 51 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 然后换行 和其他数字遵循相同的数据模式 spaced by a space
备注 如图所示
我就知道了:
#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;
}
但不是阅读然后转换
我已经创建了一个小的 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
您好,我修改了上面的程序,因为上面的程序没有替换 space,而是使用下面的程序,但必须添加头文件:-
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;
}