在文件中剪切单词并在c ++中保留行号时进行书写

时间:2012-05-13 20:14:07

标签: c++ file inputstream

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

 int main(){
 ifstream infile;
 ofstream outfile;
 infile.open("oldfile.txt");
 outfile.open("newfile.txt");
 while(infile){
    string str,nstr;
    infile>>str;
    char charr[10];
    charr[0]='<';charr[1]='\0';
    nstr=str.substr(0,str.find_first_of(charr));

    outfile<<nstr<<' ';
 }
}

这个程序使用substr(0,string.find_first-of(charcter数组,它的起点是子字符串))每个单词的不必要的子字符串,但在写入另一个文件时它不保留行号。你能修好它吗 。它按顺序逐字写入文件。代码没有逐行保存,

2 个答案:

答案 0 :(得分:0)

字符串输入不关心行边界,它会处理\ n,\ t,\ v和其他可能与空格相同的内容。

#include <sstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string line,word;
    char foo[] = "<";
    while ( getline(cin,line) ) {
        string newline;
        for ( istringstream words(line)
            ; words >> word ; ) {
                newline+=word.substr(0,word.find_first_of(foo))+' ';
        }
        cout << newline << '\n';
    }
}

答案 1 :(得分:-1)

更改

 outfile<<nstr<<' ';

 outfile<<nstr<<endl;

这将逐行写入,而不是使用单个空格字符进行拼写。