gpt4 book ai didi

c++ - ifstream 在文件中获取错误的字符串

转载 作者:行者123 更新时间:2023-11-30 04:25:15 24 4
gpt4 key购买 nike

代码如下:

代码:

#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
马六甲
双溪独龙

问题:

1.)我希望 getline 将名称读入字符数组名称,然后我可以打印出名称,问题是我没有获取全名,而是只获取了部分名称,为什么会这样?

谢谢!

最佳答案

问题是 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)或 boost::lexical_cast .

关于c++ - ifstream 在文件中获取错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com