使用QTextStream C++; 我正在做一个小程序,以前在java中做过,但是我想尝试C++中的同样的工作。其思想是合并两个文本文件
文件1:使用QTextStream C++; 我正在做一个小程序,以前在java中做过,但是我想尝试C++中的同样的工作。其思想是合并两个文本文件,c++,qt,C++,Qt,文件1: a b c 文件2: 1 2 3 输出文件应为: a1 b2 c3 我看过QTextStream文档,这是建议将文件逐行读取为字符串的代码 QFile file(input); // this is a name of a file text1.txt sent from main method if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return 1; } QTextStream in(&
a
b
c
文件2:
1
2
3
输出文件应为:
a1
b2
c3
我看过QTextStream文档,这是建议将文件逐行读取为字符串的代码
QFile file(input); // this is a name of a file text1.txt sent from main method
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return 1;
}
QTextStream in(&file);
QString line = in.readLine();
while (!line.isNull())
{
line = in.readLine();
}
但由于某些原因,根本没有从文件中加载任何内容。我通过在控制台上打印“行”来证明这一点,但一无所获
有什么想法吗?我只想读取文件,最后得到这样一个字符串
QString text1 = "a\n2\n3"
我会对这两个文件执行此操作,将字符串拆分为QStringList(最有可能),以我想要的格式将它们连接在一起,并将它们写入第三个txt文件。如果需要整个文件,为什么要逐行读取
QString line = in.readAll();
此外,while循环错误,您需要为文本流检查while(!in.atEnd())
,而不是检查字符串是否为null
readLine
将不包括新行符号
无论如何,同时打开两个文件并在运行中构造字符串比拆分和合并要容易得多
QFile f1("h:/1.txt");
QFile f2("h:/2.txt");
f1.open(QIODevice::ReadOnly | QIODevice::Text);
f2.open(QIODevice::ReadOnly | QIODevice::Text);
QString s;
QTextStream s1(&f1);
QTextStream s2(&f2);
for (int i = 0; i < 3; ++i) {
s.append(s1.readLine());
s.append(s2.readLine());
if (i != 2)s.append("\n");
}
QFile f1(“h:/1.txt”);
QFile f2(“h:/2.txt”);
f1.打开(QIODevice::ReadOnly | QIODevice::Text);
f2.打开(QIODevice::ReadOnly | QIODevice::Text);
QString s;
QTextStream s1(&f1);
QTextStream s2(&f2);
对于(int i=0;i<3;++i){
s、 追加(s1.readLine());
s、 追加(s2.readLine());
如果(i!=2)s.append(“\n”);
}
如果需要整个文件,为什么要逐行阅读
QString line = in.readAll();
此外,while循环错误,您需要为文本流检查while(!in.atEnd())
,而不是检查字符串是否为null
readLine
将不包括新行符号
无论如何,同时打开两个文件并在运行中构造字符串比拆分和合并要容易得多
QFile f1("h:/1.txt");
QFile f2("h:/2.txt");
f1.open(QIODevice::ReadOnly | QIODevice::Text);
f2.open(QIODevice::ReadOnly | QIODevice::Text);
QString s;
QTextStream s1(&f1);
QTextStream s2(&f2);
for (int i = 0; i < 3; ++i) {
s.append(s1.readLine());
s.append(s2.readLine());
if (i != 2)s.append("\n");
}
QFile f1(“h:/1.txt”);
QFile f2(“h:/2.txt”);
f1.打开(QIODevice::ReadOnly | QIODevice::Text);
f2.打开(QIODevice::ReadOnly | QIODevice::Text);
QString s;
QTextStream s1(&f1);
QTextStream s2(&f2);
对于(int i=0;i<3;++i){
s、 追加(s1.readLine());
s、 追加(s2.readLine());
如果(i!=2)s.append(“\n”);
}
尝试此块-:
while(!in.atEnd())
{
QString line = in.readLine();
....
}
是否使用此while循环获取输出?尝试此块-:
while(!in.atEnd())
{
QString line = in.readLine();
....
}
是否使用此while循环获取输出?如果文件名不包含完整路径,但您非常确定该文件与应用程序位于同一目录中,请使用如下应用程序路径:
QString filename = QCoreApplication::applicationDirPath() + "/" + input;
如果文件名不包含完整路径,但您非常确定该文件与应用程序位于同一目录中,请使用如下应用程序路径:
QString filename = QCoreApplication::applicationDirPath() + "/" + input;
多亏了语法纳粹主义者路过而不帮忙是的,我知道@Roku这基本上就是我要问的,它甚至没有读文件,因为所有的'input1'是,是'text1.txt'没有文件路径有什么具体的原因它必须是QTextStream吗?多亏了语法纳粹主义者路过而不帮忙是的,我知道@Roku这基本上就是我要问的,它甚至没有读取文件,因为所有的“input1”都是,是“text1.txt”没有文件路径它必须是QTextStream有什么具体的原因吗?为答案欢呼似乎正是我需要的,但是它仍然没有读取任何内容,txt文件必须在哪里才能被f1读取(“text1.txt”)因为我基本上可以把它放在java中,并从项目文件夹中读取它?好吧,它对我来说很有效,文件在哪里并不重要,我硬编码了它,但只要你传递一个有效的文件路径,它就应该工作。您无法获得输出,可能是因为您没有正确打开文件。你的方法是否返回1?不,我的意思是,我没有输入文件路径,我输入了一个文件名,就像你在java中输入的一样(java会在项目文件夹中查找该名称),我这样做是因为我通过控制台的用户输入获取文件名,这样做行吗?或者我实际上必须指定一个文件路径,因为这看起来很愚蠢,无法只指定一个名称。如果不指定完整的文件路径,文件将从当前目录中读取。这取决于如何运行应用程序。它与C++或java无关。除了while循环,代码看起来还不错,所以你没有得到输出的原因是