保存文件中的名称

时间:2015-03-22 17:43:18

标签: c++

我想将这本书的几个名字保存到一个文件中,然后从文件中读取。像这样:

 char name[100];
 cout<<"Enter the name of the book:";
 cin.getline(name,100);

ofstream bookname("D:bookname.txt",ios::app);
 if(bookname.is_open()){    
    bookname<<name<<"\n";
    bookname.close();
}
else
    cout<<"The file does'nt open successfully!\n";
}

从文件中读取:

string n[100];
ifstream read("D:bookname.txt");
for(int i=0; i<5; ++i)
    read>>n[i];
read.close();

但我的问题是当我在字符串n中保存名称时,如果名称在单独保存的字母之间有空格。

例如,如果进入秘密花园&#39;它保存为字符串&#39; secret&#39; &#39;花园&#39;

如何将其保存为一个元素?

2 个答案:

答案 0 :(得分:2)

我认为你的基本问题是你正在使用&gt;&gt;在输入流上,一次读取一个单词。要一次读取一行,您应该使用getline()。

答案 1 :(得分:0)

首先,您不能将/n保存到文件中,在某些情况下可能会导致从文件中读取时出现问题。

您的代码中的另一件事是您将名称保存为字符并将其作为字符串读取,这就是问题的原因。保存字符的方式与保存字符串的方式不同。当你写字符串时,你只需要写一个完整的行来写句子。

我认为你的代码应该是这样的

写作:

string name;
cout<<"Enter the name of the book:";
getchar();
getline(cin,name);
ofstream bookname("D:bookname.txt",ios::app);
if(bookname.is_open()){    
    bookname<<name;
    bookname.close();
}
else
    cout<<"The file does'nt open successfully!\n";
}

阅读

string n[100];
int c=0;//the number of times you read a sentence
ifstream read("D:bookname.txt");
while(read)//keap reading from the file until you reach eof.
{
    read>>n[c];
    c++;
}
read.close();