2016-03-20 3 views
0

ファイルのタイトル、アーティスト、価格をorders.txtファイル内に出力できるプログラムを作成しました。ループ内でファイルの内容をifstreamするための変数の割り当て方法。 (C++)

コンテンツに変数を割り当ててコンソールに正常に出力するのに苦労しています。

オーダーリストの例は次のとおりです。私は現在、出力にすべての内容をwhileループを使用してい

Undead 
Hollywood Undead 
4.50 
Paradise Lost 
Hollywood Undead 
3.00 
Hello 
Adele 
5.00 
Out Of Control 
Hoobastank 
6.00 

。タイトルとアーティストのために別々の変数にgetlineを使う必要があることは分かっています。私はまた、価格をintにする必要があることを知っています。

コードをデバッグすると、ループが終了せず、書式設定がオフになっています。私はsetw()とiomanipを使用しています。

お願いします!私は価格を文字列にしてintに変換しようとしました。ここで

は、私のソースコードです:

#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <string> 

using namespace std; 

int main() 
{ 

ifstream inputFile; 
inputFile.open("Orders.txt"); 
int number, price, totalNum = 0; 
double total; 
string title, artist; 

cout << left << setw(36) << "Title"; 
cout << setw(22) << "Artist" << left << "Price" << endl; 
while (!inputFile.eof()) 
{ 
    getline(inputFile, title); 
    getline(inputFile, artist); 
    inputFile >> price; 
    cout << left << setw(36) << title; 
    cout << setw(22) << artist << left << "$" << price << endl; 

} 
inputFile.close(); 

system("pause"); 
return 0; 
} 
+0

可能な重複によって引き起こさbeeingてさ[なぜstd :: getline()は書式付き抽出の後に入力をスキップするのですか?](http://stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction) – MikeCAT

答えて

0

は、あなたはこれを試してみました:

while (inputfile >> title) 
{ 
    getline(inputFile, artist); 
    inputFile >> price; 
    cout << left << setw(36) << title; 
    cout << setw(22) << artist << left << "$" << price << endl; 
} 

たぶん無限loobは、テキストファイルのいくつかの並べ替えの悪いenconding

+0

残念ながら: while(inputFile >> title) はタイトルが文字列なので動作しません。 while(getline(inputFile >> title)) また、ループが停止しました。今は、列と行のコンソールに出力する方法が必要です。 – Chriskt

関連する問題