簡體   English   中英

從'int'到'char *'的無效轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM