以下是我正在处理的文本文件示例:
http://example.com/object1 50 0
http://example.com/object2 25 1
http://example.another.com/repo/objects/1 250 0
ftp://ftpserver.abc.edu:8080 13 5
...
我想将url,size(第一个数字)和优先级(第二个数字)传递给数组。这是我的代码:
ifstream infile;
infile.open("ece150-proj2-input.txt");
//Get the number of lines in the text file
int lines = 0;
while (!infile.eof()) {
string line;
getline(infile, line);
lines++;
}
//Get the components in the input file
char url[lines][50];
float size[lines];
float delay[lines];
for (int i = 0; i < lines; i++) {
infile >> url[i] >> size[i] >> delay[i];
}
//Testing if I get the url address correctly
cout << url[0] << endl;
cout << url[1] << endl;
然而,结果有些奇怪:
pĞQ?
?Q?
为什么会这样?有谁能解决这个问题。谢谢; - )
答案 0 :(得分:0)
这里的问题是,当您现在位于文件末尾时读取文件。您需要调用infile.seekg(0, infile.beg);
来回放到流的开头。你也可以关闭并重新打开infile。
其次你宣布char url[lines][50];
你不能这样做。 c ++中数组的长度必须是编译时常量。我实际上对编译的代码感到惊讶,并且根本没有给你任何输出。
我建议你使用std :: vector,它就像一个数组,但你可以添加元素到最后。这样你就不需要事先了解行数。