Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将文本文件逐行读入并行数组C++;_C++_File_File Io - Fatal编程技术网

C++ 将文本文件逐行读入并行数组C++;

C++ 将文本文件逐行读入并行数组C++;,c++,file,file-io,C++,File,File Io,无法将信息从文本文件读取到并行数组。信息在文件中的排列方式如下: Name Street Address City, State, Zip Order size Name Street Address City, State, Zip Order size 基本上,我需要将名称、街道地址和city/state/zip作为行拉入字符串数组,然后将订单大小拉入int数组进行一些计算。总共4个阵列 问题是它可以很好地读取第一个顺序,但是第二个顺序看起来不同,输入和之后的所有顺序都显示为数字: Jo

无法将信息从文本文件读取到并行数组。信息在文件中的排列方式如下:

Name
Street Address
City, State, Zip
Order size

Name
Street Address
City, State, Zip
Order size
基本上,我需要将名称、街道地址和city/state/zip作为行拉入字符串数组,然后将订单大小拉入int数组进行一些计算。总共4个阵列

问题是它可以很好地读取第一个顺序,但是第二个顺序看起来不同,输入和之后的所有顺序都显示为数字:

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;
}
const int ORDERS=10;
coutordersize[i];
}
inputFile.close();
对于(int i=0;icoutextraction运算符在输入流中保留行的尾随部分。因此,下一个getline将不会读取所需的行,而只读取订单行的尾随部分。可以独占使用getline并在事实发生后从行中提取int,或者确保在提取后跳过行的其余部分


此外,Ben Voigt和john所说的。

格式化的提取运算符(
>
)跳过空行。
getline
不会。您可能还希望定期检查流故障,以帮助调试。您描述了一种文件格式,其中每条记录占用五行(四加一空)。但是您编写的代码对每条记录只读取三行。这就是问题所在。为了确保我正确地理解了这一点,我最好使用getline 5x(4带数据,一个空白),然后将字符串转换为int并将其分配给相应的数组?是的,这是我的建议。