Как я читаю текстовый файл из второй строки с помощью fstream?

Фактически, метод ExecuteScalar возвращает первый столбец первой строки возвращаемого DataSet. В вашем случае вы делаете только Insert, вы на самом деле не запрашиваете никаких данных. Вам нужно запросить scope_identity () после того, как вы вставите (это синтаксис SQL Server), и тогда вы получите ответ. См. Здесь:

Linkage

EDIT: Как отметил Майкл Харен, вы упомянули в своем теге, что используете MySql, используйте last_insert_id (); вместо scope_identity ();

17
задан Rakete1111 2 September 2016 в 19:53
поделиться

5 ответов

Используйте getline () для чтения первой строки, затем начните читать остальную часть потока.

ifstream stream("filename.txt");
string dummyLine;
getline(stream, dummyLine);
// Begin reading your stream here
while (stream)
   ...

(Измененный на станд.:: getline (благодарит dalle.myopenid.com))

27
ответ дан 30 November 2019 в 10:29
поделиться

Вы могли использовать проигнорировать функцию потока:

ifstream stream("filename.txt");

// Get and drop a line
stream.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );

// Get and store a line for processing.
// std::getline() has a third parameter the defaults to '\n' as the line
// delimiter.
std::string line;
std::getline(stream,line);

std::string word;
stream >> word; // Reads one space separated word from the stream.

частая ошибка А для чтения файла:

while( someStream.good() )  // !someStream.eof()
{
    getline( someStream, line );
    cout << line << endl;
}

Это перестало работать потому что: При чтении последней строки это не читает маркер EOF. Таким образом, поток все еще хорош, но больше нет данных, оставленных в потоке читать. Таким образом, цикл повторно введен. станд.:: getline () затем пытается считать другую строку из someStream и сбоев, но все еще записать строку в станд.:: суд.

Простое решение:
while( someStream ) // Same as someStream.good()
{
    getline( someStream, line );
    if (someStream) // streams when used in a boolean context are converted to a type that is usable in that context. If the stream is in a good state the object returned can be used as true
    {
        // Only write to cout if the getline did not fail.
        cout << line << endl;
    }
}
Правильное решение:
while(getline( someStream, line ))
{
    // Loop only entered if reading a line from somestream is OK.
    // Note: getline() returns a stream reference. This is automatically cast
    // to boolean for the test. streams have a cast to bool operator that checks
    // good()
    cout << line << endl;
}
23
ответ дан 30 November 2019 в 10:29
поделиться

Назовите getline () однажды для выбрасывания первой строки

существуют другие методы, но проблема - это, Вы не знаете, какой длины первая строка будет, делают Вас? Таким образом, Вы не можете пропустить его, пока Вы не знаете, где это сначала '\n'. Если бы однако Вы действительно знали, сколько времени первая строка была, Вы могли просто искать мимо нее, то начать читать, это будет быстрее.

Так, чтобы сделать это первый путь посмотрел бы что-то как:

#include <fstream>
#include <iostream>
using namespace std;

int main () 
{
    // Open your file
    ifstream someStream( "textFile.txt" );

    // Set up a place to store our data read from the file
    string line;

    // Read and throw away the first line simply by doing
    // nothing with it and reading again
    getline( someStream, line );

    // Now begin your useful code
    while( !someStream.eof() ) {
        // This will just over write the first line read
        getline( someStream, line );
        cout << line << endl;
    }

    return 0;
}
2
ответ дан 30 November 2019 в 10:29
поделиться
#include <fstream>
#include <iostream>
using namespace std;

int main () 
{
  char buffer[256];
  ifstream myfile ("test.txt");

  // first line
  myfile.getline (buffer,100);

  // the rest
  while (! myfile.eof() )
  {
    myfile.getline (buffer,100);
    cout << buffer << endl;
  }
  return 0;
}
-1
ответ дан 30 November 2019 в 10:29
поделиться

этот код может считать файл из Вашей указанной строки из файла, но Вы имеете к make-файлу в файловом менеджере перед рукой, мое имя файла является "временным" кодом, дан ниже

https://надежда i.stack.imgur.com/OTrsj.png

, которой это может помочь

0
ответ дан 30 November 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: