这些行如示例中所示:
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;
...您还必须在循环中打印这些变量,否则,您将只打印文件中最后一行的信息。
我还注意到,您周围有ojit_code。现在可以使用here找到另一种利用该对象的方法。
关于c++ - 如何从C++中的txt文件输出。该文件有一两行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34709209/