ここで初心者をコーディングしています。 C++は私の最初の言語です。可能であれば、説明を含めてください。ファイルからの読み込みC++(行ごとに - 混合変数)
私は、混合変数を含むファイルから行を読みなければなりません。私は現在2つの問題に直面しています:
すべての行を読むことができるように入力文をループします。私は、これは次の文字を確認する必要があることを理解して、そのENDOFFILEた場合、それがループを中断します
while(inputFile.peek() != EOF)
が、私はそれを得ることができない:私はループを行うには、次のコードを使用するように制限しています働く
bool(空白をスキップする)の前に文字列を読み込む。空白をスキップするには、私が使用するようになっています:以下のように
while(inputFile.peek() == ' ') inputFile.get();
ファイルの内容は以下のとおりです。
Car CN 819481 maintenance false NONE
Car SLSF 46871 business true Memphis
Car AOK 156 tender true McAlester
私のコードは以下の通りです。私はmain()
関数を唯一のものとして省略しました。input()
です。だから、最初の行はbool値まで読みます(そして最後の文字列を省略します)、およびループが動作していない(またはそれ
Car CN 819481 maintenance false
:私は取得プログラムを実行した後
#include <iostream> //used in main()
#include <iomanip>
#include <string>
#include <fstream> //to work with file
#include <cstdlib> //for exit() function
using namespace std;
void input(){
ifstream inputFile;
string type, rMark, kind, destination;
int cNumber;
bool loaded;
inputFile.open("C:\\My Folder\\myFile.txt"); //open file
if (!inputFile){
cerr << "File failed to open.\n";
exit(1);
}
//read file contents
while(inputFile.peek() != EOF){
//initially I had >>destination in the statement below as well
//but that gave me the same results.
inputFile >> type >> rMark >> cNumber >> kind >> loaded;
//skip whitespace
while(inputFile.peek() == ' '){
inputFile.get();
}
//get final string
getline(inputFile, destination);
cout << type << " " << rMark << " " << cNumber << " " << kind << " ";
cout << boolalpha << loaded << " " << destination << endl;
}
inputFile.close(); //close file
} //end input()
それは読んではならないものですか?)。私は.peek()と.gets()を動かそうとしましたが、何の組み合わせもうまくいきませんでした。
ありがとうございます!
ありがとうございました。今すぐ動作します:) – gboyn
動作する場合は、アップホートして回答を受け入れる必要があります。 – user31264
受け入れ方が不明 - このウェブサイトの新機能 EDIT:見つかりました – gboyn