使用getchar()来获取字符,并使用每行c ++的换行符将它们保存到文件中

时间:2014-02-04 13:25:56

标签: c++ linux getchar

作为c ++的初学者,我试图使用getchar()获取输入字符,并将它们保存在文件中的单独行中,而不更改该文件的旧内容。但我不能单独列出这些行

void Record()
{
    system("stty raw") ;
    string line,old,s ;
    char charflow ;
    ifstream in ("Savefile");

    while(in >> s)
        old+=s ;
    while(charflow = getchar(), charflow!=char(13) ){
        line.push_back(charflow) ;
    }

    ofstream out ("Savefile") ;
    out<<old<<"\n"<<line;
    system("stty cooked") ;
} 


int main(int argc, char*argv[])
{
    cout << "put line 1: "  ;
    Record() ;
    cout << endl ;
    cout << "put line 2: " ;
    Record() ;
    cout << endl ;
    cout << "put line 3: " ;
    Record() ;
    cout << endl ;
}

该文件如下所示:

line1line2

line3

2 个答案:

答案 0 :(得分:0)

更改

old += s + "\n"; // because when s is added to old it is just a string not "\n" (the line break) is added.

所以我们需要自己添加换行符。

其次,无需在"\n"

中添加out << old << "\n" << line;

只需将其更改为

即可
out << old << line << "\n"; // line break at the end of each word is needed.

希望它完成你的任务。 :)

答案 1 :(得分:0)

只是想添加一些东西,如果我使用像Line1,Line2,line3这样的单词,那么代码将会很顺利

线路1

2号线

3号线

但如果我在每一行添加更多单词,我会遇到麻烦,所以我改变了

while(in >> s) 

while(getline(in, s))   

除了Swapnil R Mehta答案。