[英]invalid conversion from 'int' to 'char *'
我想编写一个程序,该程序将从文本文件读取并使用结构存储文本文件内部的内容,然后重新组合并打印出文本文件中的信息。 但是我遇到了getline
问题。 我试图写这样的getline
getline(infile, info.name)
但这不起作用。 我也包含了<string>
和<cstring>
但是我仍然遇到类似的错误
错误C2664:'std :: basic_istream <_Elem,_Traits>&std :: basic_istream <_Elem,_Traits> :: getline(_Elem *,std :: streamsize)':无法将参数1从'int'转换为'char *'
和
错误C2664:“ std :: basic_istream <_Elem,_Traits>&std :: basic_istream <_Elem,_Traits> :: getline(_Elem *,std :: streamsize,_Elem)':无法从'char [10] [80]转换参数1 ]'转换为'char *'
我想打印的文本文件是以下文本
陈奕迅
新加坡共和国
天秤座1993年10月23日
7
我希望在C ++方面表现出色
我希望克里斯蒂娜·格里美能赢得声音
我希望 ......
对不起,菜鸟的问题,并提前感谢!
#include <iomanip>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cctype>
#include <fstream>
#include <string>
using namespace std;
const int MAX = 80;
const int MAXNO = 10;
enum Zodiac
{
Aquarius, Pisces, Aries, Taurus,
Gemini, Cancer, Leo, Virgo,
Libra, Scorpio, Sagittarius, Capricorn
};
struct Date
{
Zodiac sign;
int day;
int month;
int year;
};
struct Student
{
char name [MAX];
char nationality [MAX];
Date birthDate;
int no; // no of other messages
char wishMessage [MAXNO][MAX];
// Feel free to add in more features
};
void myInfo (fstream&, char [], Student&);
// The above function reads information from the text file
// and store the information in a structure reference parameter
void printOut(Student);
int main()
{
fstream infile;
char fName[MAX];
Student info;
cout << "Enter your info file name: "
cin >> fName;
cout << endl;
myInfo(infile, fName, info);
printOut(info);
}
void myInfo (fstream& infile, char fName[], Student& info)
{
infile.open(fName, ios::in);
if(!infile)
{
cout << "Error file not found!" << endl;
exit(0);
}
infile.getline(info.name, MAX);
infile.getline(info.nationality,MAX);
infile << info.birthDate.sign
<< info.birthDate.day
<< info.birthDate.month
<< info.birthDate.year;
infile.getline(info.no, MAX);
infile.getline(info.wishMessage, MAXNO, MAX);
infile.close();
cout << "Successfully readed!" << endl;
}
void printOut(Student info)
{
cout << "My name is " << info.name << endl;
cout << "My nationality is " << info.nationality << endl;
cout << "My date of birth is " << info.birthDate.day
<< " " << info.birthDate.month << " "
<< info.birthDate.year << endl;
cout << "I am " << info.birthDate.sign << endl;
cout << "\n I have " << info.no << " wishes:" << endl;
}
似乎您正在尝试使用getline读取非字符串,而根据文档 ,它正在读取字符串。
从流中提取字符作为未格式化的输入,并将它们作为c字符串存储到s中,直到提取的字符是定界字符或n个字符已写入s(包括终止的空字符)为止。
这是两条违规行:
infile.getline(info.no, MAX);
和
infile.getline(info.wishMessage, MAXNO, MAX);
前者读入int,后者读入字符串数组。
您将需要先读入字符串,然后根据需要进行相应的转换操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.