2011-12-19 7 views
0

この関数の動作をよく理解していません。C++ getline()function

私は、getline()で1行を読む簡単なプログラミングを書いています。例えば

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'が' char'への定数ポインタではなく 'atoi()'に渡されていると不平を言っています)。このコードは実際に33行目の 'assign1_2.cpp'にありますか? –

+0

不思議なことに、どのコンパイラを使用しましたか?私は、 'std :: string'型が' 'std :: string {aka std :: basic_string }' 'として与えられているという事実はかなりきれいだと思います! –

答えて

5

エラーが発生したコードは表示されませんでしたが、std::stringという引数を使用してatoiを呼び出しようとしたというエラーが表示されます。 atoiはC文字列(man atoi)を取り、あなたが好きそれを呼び出す必要があります:あなたが呼び出ししようとしている機能

atoi(line.c_str()); 
+0

申し訳ありませんが不十分な情報について。テキストファイルには以下のテキストが含まれています。 assign1_2.cpp:33:20:エラー: '{別名のstd :: をのbasic_string}のstd :: string' を引数 '1' のint ATOI」には 'CONSTのchar *' に変換することができない(CONST CHAR *) ' と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 line[2000]

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

ありがとう、しかし、私はCを使用していると思った私は推測する.. – user1047092

0

変更string line

#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; 
}