如何在txt文件中复制字符串?

时间:2015-11-14 03:47:22

标签: c++

以下是我正在处理的文本文件示例:

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?

为什么会这样?有谁能解决这个问题。谢谢; - )

1 个答案:

答案 0 :(得分:0)

这里的问题是,当您现在位于文件末尾时读取文件。您需要调用infile.seekg(0, infile.beg);来回放到流的开头。你也可以关闭并重新打开infile。

其次你宣布char url[lines][50];你不能这样做。 c ++中数组的长度必须是编译时常量。我实际上对编译的代码感到惊讶,并且根本没有给你任何输出。

我建议你使用std :: vector,它就像一个数组,但你可以添加元素到最后。这样你就不需要事先了解行数。