代码如下:
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
int id;
char name[50];
ifstream myfile("savingaccount.txt"); //open the file
myfile >> id;
myfile.getline(name , 255 , '\n'); //read name **second line of the file
cout << id ;
cout << "\n" << name << endl; //Error part : only print out partial name
return 0;
}
1800567
何瑞章
21个
女
马来西亚
012-4998192
20,Lorong 13,Taman Patani Janam
马六甲
Sungai Dulong
1.)我希望getline将名称读入char数组名称然后我可以打印出名称,而不是获取全名,我只得到部分名称,为什么会发生这种情况?
谢谢!
答案 0 :(得分:2)
问题是myfile >> id
不会消耗第一行末尾的换行符(\n
)。因此,当您调用getline
时,它将从ID的末尾读取,直到该行的结尾,并且您将获得一个空字符串。如果再次呼叫getline
,它实际上会返回名称。
std::string name; // By using std::getline() you can use std::string
// instead of a char array
myfile >> id;
std::getline(myfile, name); // this one will be empty
std::getline(myfile, name); // this one will contain the name
我的建议是只对所有行使用std::getline
,如果一行包含一个数字,你可以使用std::stoi
(如果你的编译器支持C ++ 11)或{{ 3}}