0

テキスト ファイルから並列配列への情報の読み取りに問題があります。情報はファイル内で次のように配置されています。

Name
Street Address
City, State, Zip
Order size

Name
Street Address
City, State, Zip
Order size

基本的に、名前、番地、都市/州/郵便番号を行として文字列配列に取り込んでから、注文サイズを int 配列に取り込んで計算を行う必要があります。合計 4 つのアレイ。

問題は、最初の注文は問題なく読み取れるが、2 番目の注文は入力とそれ以降のすべての注文が数字として表示されるのとは異なるように見えることです。

John Doe
123 Main Street
City, State Zipcode

John Doe
123
 Main Street
City, State Zipcode
9
0
9
9
4679937
9
0
9
9
4710208

そして、ここに関連するコードがあります:

    const int ORDERS = 10;
    cout << "Reading from file..." << endl;
ifstream inputFile;

string name[ORDERS], streetAddress[ORDERS], cityStateZip[ORDERS];
string line;
int orderSize[ORDERS];

inputFile.open("Orders.txt");
for(int i = 0; i < ORDERS; i++)
{   
    getline(inputFile, line);
    name[i] = line;
    getline(inputFile, line);
    streetAddress[i] = line;
    getline(inputFile, line);
    cityStateZip[i] = line;
    inputFile >> orderSize[i];  
}

inputFile.close();

for(int i = 0; i < ORDERS; i++)
{
    cout << name [i] << endl;
    cout << streetAddress[i] << endl;
    cout << cityStateZip[i] << endl;
    cout << orderSize [i] << endl;
}

何か案は?最初の注文などの後に文字列を int として読み取ろうとしているようです。

4

1 に答える 1

1

>> 抽出演算子は、行の末尾の \n を入力ストリームに残します。したがって、次の getline は必要な行を読み取るのではなく、注文行の末尾の \n だけを読み取ります。getline を排他的に使用して事後の行から int を抽出するか、抽出後に残りの行をスキップするようにしてください。

さらに、Ben Voigt と john が言ったこと。

于 2013-05-06T19:46:15.860 に答える