这些行如示例中所示:

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的第一个字符。isbnfin.ignore(1, '\n')之后仍然在流中。也可能是string line; ...

您还必须在循环中打印这些变量,否则,您将只打印文件中最后一行的信息。

我还注意到,您周围有ojit_code。现在可以使用here找到另一种利用该对象的方法。

关于c++ - 如何从C++中的txt文件输出。该文件有一两行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34709209/

10-11 23:06
查看更多