我刚刚在学校开始了c ++课,并且开始学习这种语言。对于一个学校问题,我试图使用getline跳过文本文件中的行。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
int np;
ifstream fin("gift1.txt.c_str()");
string s;
fin >> np;
string people[np];

for(int counter = 0; counter == 1 + np; ++counter)
{
    string z = getline(fin, s)
    cout << z << endl;
}
}


每当我尝试编译时,我都会得到错误


  gift1.cpp:22:21:错误:请求从“ std :: basic_istream”转换为非标量类型“ std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}”


有什么简单的解决方案吗?

最佳答案

您在此代码中遇到了很多问题-因此,除了给您注释以外,我还向您的代码添加了注释

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int np;
    ifstream fin("gift1.txt.c_str()");
    string s; // declare this inside the loop
    fin >> np;
    string people[np]; // This is a Variable Length array. It is not supported by C++
                       // use std::vector instead

    for(int counter = 0; counter == 1 + np; ++counter)
    // End condition is never true, so you never enter the loop.
    // It should be counter < np
    {
        string z = getline(fin, s) // Missing ; and getline return iostream
                                   // see next line for proper syntax

        //if(getline(fin, s))
                cout << z << endl; // Result will be in the s var.
                                   // Discard the z var completely
    }
}

10-08 12:02