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]=' ';
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的说法,这是一个有结尾的意思(在开头)。当您使用cin.getline()读取输入时。也许使用cin<lt;流可能是一个更好的选择。
STDIN(标准输入)被缓冲,
cin>>i;
将'\n'留在缓冲区中。在使用getline再次读取之前,您必须刷新缓冲区,例如:
cin.clear();fflush(stdin);
想了解更多信息,请看这个问题:如何清除C++中的cin缓冲区。
或者您可以在读取数据时使用getline
cin.getline(数据,10);
这样,当您想要读取含义时,就不必刷新stdin缓冲区。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到