【发布时间】:2014-01-01 19:52:01
【问题描述】:
我正在编写一个应用程序,它将一些预编译的包安装到 ARM Chromebook 上,我不想每次添加新包时都更新我的程序,所以我将它设置为只下载我拥有的所有包的列表(我可以更新),然后检查它是否是我已经编译并上传到我的网站的包。
问题是,它似乎只读取了文件的最后一行。 最让我困惑的是它只读取这个特定文件的最后一行。 它读取所有行的大多数其他文件都很好。
这是我的代码:
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <cstdio>
using namespace std;
int main(int argc, char* args[]) {
if (argc < 2) {
cout << "Please specify an application name.\n";
return 0;
}
cout << "Fetching list...\n";
system("wget -N www.charmbrew.tk/files/list --quiet");
cout << "Reading application list...\n";
string line;
string package = args[1];
bool isInList = false;
ifstream list("list");
while (getline(list,line)) {
cout << line;
if (line == package) isInList = true;
}
list.close();
...
}
此代码仅读取文件的最后一行。 该文件包含三行,但它只读取最后一行。 除了我电脑上的这个文件之外的所有其他文件,它将读取所有行。
下载后我检查了文件。我知道它有多行文本。 但是出于某种原因,我的代码一直只读取最后一行。
文本文件只是一个简单的文本文件。没什么特别的。你可以自己下载看看。
【问题讨论】:
-
检查行尾。 Windows 使用 CR/LF,而 linux/unix 使用 LF。
-
@TimDave 正如OP所说,您可以自己检查。这些行是 CRLF 分隔的。文件中不存在其他控制字符。
标签: c++