从文本中读取行,删除空白并保存到新文件
C++ Reading lines from txt, removing white spaces and saving to new file
我可以征求一下意见吗?请,有人可以给代码的一个例子,它从第一个文本文件的行删除空间,并保存"没有空格的新文本"到第二个文件。我知道它可能是如何工作的,但我不能写它,因为我是编程初学者。谢谢你的建议。我的代码:
//read csv file
void readCSV(istream &input, vector< vector<string> > &output)
{
string csvLine;
while(getline(input, csvLine) )
{
istringstream csvStream(csvLine);
vector<string> csvColumn;
string csvElement;
while(getline(csvStream, csvElement) )
{
csvColumn.push_back(csvElement);
}
output.push_back(csvColumn);
}
}
//save all from csv to txt
void saveToTxt()
{
fstream file("file.csv", ios::in);
ofstream outfile;
outfile.open("file.txt");
typedef vector< vector<string> > csvVector;
csvVector csvData;
readCSV(file, csvData);
for(csvVector::iterator i = csvData.begin(); i != csvData.end(); ++i)
{
for(vector<string>::iterator j = i->begin(); j != i->end(); ++j)
{
outfile<<*j<<endl;
}
//code for deleting spaces, what i found, but i can't implement to above codes, coz my programming skill are not big
string s;
while (getline( cin, s ))
{
s.erase(
remove_if(
s.begin(),
s.end(),
ptr_fun <int, int> ( isspace )
),
s.end()
);
cout<<s<<endl;
我喜欢那些不会成为家庭作业结果的解决方案。下面是我将如何为规范编写代码,部分原因是我真的认为应该这样做,部分原因是为了给其他人一些有趣的阅读。它还包含了创建一个教师友好的解决方案所需的所有提示:
#include <algorithm>
#include <cctype>
#include <iterator>
int main() {
std::remove_copy_if(
std::istreambuf_iterator<char>(std::ifstream("in.txt").rdbuf()),
std::istreambuf_iterator<char>(),
std::ostreambuf_iterator<char>(std::ofstream("out.txt").rdbuf()),
[](unsigned char c){ return std::isspace(c) && c != 'n'; });
}
如果你不能使用c++ 2011编译器,你需要用一个具有相同签名的实际函数来替换lambda函数
您可以通过使用与remove_if
相同的想法来简化这一点,但是直接应用它来确定是否要复制。类似下面的代码。注意:没有测试,但我希望你能明白。
#include <iostream>
#include <iterator>
#include <fstream>
#include <functional>
#include <cctype>
using namespace std;
int main(int argc, char *argv[])
{
ifstream is("file.csv", ios::in);
ofstream os("file.txt", ios::out|ios::trunc);
std::remove_copy_if(
istream_iterator<char>(is),
istream_iterator<char>(),
ostream_iterator<char>(os),
std::ptr_fun<int,int>(isspace));
os.close();
is.close();
return 0;
}
编辑:我不敢相信Deitmar和我有几乎相同的想法。
相关文章:
- 无法通过头文件保存变量的值
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 从文件中读取多行.txt字符串删除空格并创建新文件进行输出
- 是否有标准的文件保存和交换模式
- C++两次从文件保存对象读取多重继承
- 如何选择文件保存到的位置?
- 如何限制文件大小,以便我的程序在变大之后创建一个新文件?并编辑新创建的文件的名称
- 需要更新Qt .pro和Visual Studio .vcxproj添加新文件
- C 如何将二进制文件的一部分复制到新文件
- 将单词写入新文件
- 如何将文本文件保存到C 中的字符串结构
- Clang 使用 LibTooling Rewriter 生成新文件
- 从Ubuntu中的CPP程序创建新文件
- Windows Portable设备 - 创建 /复制 /删除新文件时通知
- 将文件保存到目录C
- 代码块在尝试编译或创建新文件时出现"An assertion failed!"错误
- 需要使用 QFileDialog 保存一个新文件
- 需要从png文件中读取数据并将其保存到新文件中,如何?C++
- 在使用mkdir()创建一个文件夹后,我如何让程序将文件和其他信息保存到新文件夹中?
- 从文本中读取行,删除空白并保存到新文件