无法将文本文件中的信息读取到并行数组。信息安排在文件中:
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;
}
有什么想法吗?似乎它试图在第一个订单之后读取字符串为int。
答案 0 :(得分:1)
&gt;&gt;提取运算符在输入流中留下行的尾部\ n。因此,下一个getline将不会读取您想要的行,而只会读取订单行的尾随\ n。要么专门使用getline,要么在事后从行中提取int,要么确保在提取后跳过行的其余部分。
此外,本·沃格特和约翰所说的话。