簡體   English   中英

用c ++寫入文件

[英]c++ writing into a file

我正在編寫代碼,以使用avl平衡樹結構和文件處理來制作字典。 用戶輸入單詞及其含義。 單詞存儲在樹的節點中,單詞及其含義存儲在文本文件中。 當用戶輸入單詞及其含義時,應將其存儲為:

單詞“ tab”的含義

但是單詞和含義在兩行中寫成。 以下是我的代碼:

#include <iostream>
#include<fstream>
#include<string.h>
using namespace std;

class node                  //Create a class for node.
{  public:
char keyword[10];
char meaning[100];
node *lc;
node *rc;
int h;
friend class avl;
};

class avl                   //Create a class for avl.
{public:
node* root;
avl()
{
    root=NULL;          //Initialise root to NULL.
}
node *insert(node *root,char[],char[]);
void insert1();
int height(node *);
int bal_fac(node*);
node *LL(node*);
node *LR(node*);
node *RL(node*);
node *RR(node*);
};
void avl:: insert1()        //Insert1 function to read file contents.
{
char data[10]=" ";
char meaning[100];
cout<<endl<<"Enter word: ";
cin>>data;
int len=strlen(data);
len+=4;
char line[len];
cout<<endl<<"Enter its meaning: ";
cin.getline(meaning,100,'.');
fstream myfile;
int i;
for (i=0;i<strlen(data);i++)
{
    line[i]=data[i];
}
line[i++]='.';
line[i++]='t';
line[i++]='x';
line[i++]='t';
line[i]='\0';

myfile.open(line,ios::out); //To read from file using object myfile.
if(myfile.is_open())
{
myfile<<"data          meaning"<<endl;
myfile.close();
myfile.open(line,ios::app);
    myfile<<data<<meaning;

    root=insert(root,data,meaning);//Insert new node in tree.
    myfile.close();
}
else
    cout<<"Unable to open file"<<endl;

        }

我應該做些什么改變?

我認為您的數據(單詞)中可能包含endl字符。 仔細檢查您是否要刪除任何空格(從單詞及其含義中刪除)。

編輯:每stefaanv,這是具有endl(在開頭)的意思。 當您使用cin.getline()閱讀輸入內容時。 也許使用cin <<流對您來說可能是一個更好的選擇。

STDIN(標准輸入)被緩沖並

cin >> i;

在緩沖區中保留“ \\ n”。 您要么必須先刷新緩沖區,然后再使用getline再次讀取它,例如:

cin.clear(); fflush(標准輸入);

有關更多信息,請參見此問題。 如何清除C ++中的cin緩沖區

或者您可以在讀取數據時使用getline

cin.getline(數據,10);

這樣,您在要讀取含義時就不必刷新標准輸入緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM