2011-12-19 2 views
0

Я не понимаю, как эта функция работает.C++ getline() function

Я написал простое программирование, читающее одну строку с помощью getline().

, например:

ifstream in; 
in.open("example.txt"); 
string line; 
getline(in, line); 
cout << line << endl; 

Когда я попытался запустить эту программу, я получил сообщение об ошибке, как это.

`assign1_2.cpp:33:20: error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'int atoi(const char*)' 

Я просто не понимаю, что пошло не так. Пожалуйста помоги!. Я новичок в C++.

+3

Могли бы вы покажите нам всю программу, ошибки там нет. Где вы называете atoi? – Drahakar

+2

Не похоже, что сообщение об ошибке связано с кодом, который вы опубликовали (он жалуется на '' std :: string' ', передаваемый 'atoi()' вместо постоянного указателя на 'char'). Этот код действительно находится в 'assign1_2.cpp' вокруг строки 33? –

+0

Из любопытства, какой компилятор вы использовали? Я думаю, что тип 'std :: string' задан как' 'std :: string {aka std :: basic_string } '' довольно аккуратно! –

ответ

5

Вы не представили код с изображением ошибки, но в этой ошибке говорится, что вы пытались вызвать atoi с аргументом типа std::string. atoi принимает строку C (man atoi), так что вы должны назвать это нравится:

atoi(line.c_str()); 
+0

извините за неадекватную информацию. текстовый файл содержит текст ниже. assign1_2.cpp: 33: 20: ошибка: не удается преобразовать 'зЬй :: строка {ака станд :: basic_string }' на 'сопзЬ символ *' для аргумента '1' «INT atoi (Const символ *) ' , и я попытался скомпилировать его с GCC. Я, однако, не пытался использовать atoi здесь. – user1047092

0

Какие функции вы пытаетесь вызвать? Функция gnu 'C' getline или istream :: getline?

IStream :: GetLine имеет следующую подпись

istream& istream::getline(char* str, streamsize count) 
istream& istream::getline(char* str, streamsize count, char delim) 

Так вы называете должно быть что-то вроде:

char* buf[1000] 
in.getline(buf, 1000); 
+0

спасибо, но я был tring, чтобы использовать C, я думаю .. – user1047092

0

Изменение string line к char line[2000] как так:

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


int main() 
{ 
    char line[2000]; 
    fstream in; 

    in.open("example.txt",ios::in); 

    while(!in.eof()) 
    { 
      in.getline(line,2000); 
    } 

    in.close(); 
    cout <<line; 
    cout <<endl; 

    return 0; 
}