如何从 C++ 中的 txt 文件输出。该文件有一两行
How to output from a txt file in C++. The file has one two rows
示例中的行数:
583-4-153-15601-4 '\t' Time Warp Trio '\t' Scieszka Jon '\t' 50 '\t' 50
583-0-133-15601-2 '\t' Djemte e rruges pal '\t' Ardit Zotaj '\t' 50 '\t' 50
所以每个字符串都用制表符分隔。基本上它包含一本书的信息。
ISBN-TITLE-AUTHOR-PRICE-NO. OF COPIES.<
//583-4-153-15601-4 '\t' Time Warp Trio '\t' Scieszka Jon '\t' 50 '\t' 50
//583-0-133-15601-2 '\t' Djemte e rruges pal '\t' Ardit Zotaj '\t' 50 '\t' 50
到目前为止我已经完成了这项工作,但它没有在 cmd 中给出正确的输出。
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream fin;
fin.open("bookdata.txt");
string line;
string isbn, title, author;
int var1 = 0;
int var2 = 2;
while (!fin.eof())
{
getline(fin, isbn, '\t');
getline(fin, title, '\t');
getline(fin, author, '\t');
fin >> var1;
fin >> var2;
}
cout << isbn << title << author << endl;
fin.close();
cout << var1 << var2 << endl;
}
尝试这样的事情(未测试):
while (getline(fin, isbn, '\t') && getline(fin, title, '\t') &&
getline(fin, author, '\t') && fin >> var1 && fin >> var2 &&
fin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'))
{
cout << isbn << title << author << " " << var1 << " " << var2 << endl;
}
我用了fin.ignore
,这样我们就不会得到\n
,它还在fin >> var2
之后的流中,作为下一个isbn
的第一个字符].也可以是 fin.ignore(1, '\n')
...
你还必须在循环中打印这些变量,否则你只会打印文件中最后一行的信息。
我还注意到,你周围有 string line;
。 here.
现在可以找到另一种使用此对象的方法
示例中的行数:
583-4-153-15601-4 '\t' Time Warp Trio '\t' Scieszka Jon '\t' 50 '\t' 50
583-0-133-15601-2 '\t' Djemte e rruges pal '\t' Ardit Zotaj '\t' 50 '\t' 50
所以每个字符串都用制表符分隔。基本上它包含一本书的信息。
ISBN-TITLE-AUTHOR-PRICE-NO. OF COPIES.<
//583-4-153-15601-4 '\t' Time Warp Trio '\t' Scieszka Jon '\t' 50 '\t' 50
//583-0-133-15601-2 '\t' Djemte e rruges pal '\t' Ardit Zotaj '\t' 50 '\t' 50
到目前为止我已经完成了这项工作,但它没有在 cmd 中给出正确的输出。
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream fin;
fin.open("bookdata.txt");
string line;
string isbn, title, author;
int var1 = 0;
int var2 = 2;
while (!fin.eof())
{
getline(fin, isbn, '\t');
getline(fin, title, '\t');
getline(fin, author, '\t');
fin >> var1;
fin >> var2;
}
cout << isbn << title << author << endl;
fin.close();
cout << var1 << var2 << endl;
}
尝试这样的事情(未测试):
while (getline(fin, isbn, '\t') && getline(fin, title, '\t') &&
getline(fin, author, '\t') && fin >> var1 && fin >> var2 &&
fin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'))
{
cout << isbn << title << author << " " << var1 << " " << var2 << endl;
}
我用了fin.ignore
,这样我们就不会得到\n
,它还在fin >> var2
之后的流中,作为下一个isbn
的第一个字符].也可以是 fin.ignore(1, '\n')
...
你还必须在循环中打印这些变量,否则你只会打印文件中最后一行的信息。
我还注意到,你周围有 string line;
。 here.