2017-03-17 48 views
0
#include <vector> 
#include <cstdlib> 
#include <iostream> 
#include <algorithm> 
#include <string> 
#include <fstream> 
#include <stdlib.h> 
using namespace std; 
• 
• //main func declaration etc... 
• 
//Vectors for storing information from file 
vector<string> include; 
vector<string> exclude; 
string temp; //for storing whatever the stream is on 
int len = atoi(puzzle_file >> temp); //first pos 
int width = atoi(puzzle_file >> temp); //second pos 

上記のコードは、ファイルを読み込み、その数値を対応するintに格納することを想定しています。私は#include < \ cstdlib>と#include < \ stdlib.h>を私のファイルヘッダに持っていても "atoiへの呼び出しのための一致する関数はありません"というエラーが出ています。ここからどこへ行くのか分からない。 stackoverflowやその他のフォーラムに関するいくつかの調査は、本当に私を助けた何かを見つけることができませんでした。何かアドバイス?ありがとうatoi()が期待通りに動作しない

+1

[mcve]を投稿してください。 –

+1

'c_str()'が行く方法です。 –

答えて

0

puzzle_file >> temp式はistreamを返しますが、このようなパラメータを受け入れると、atoiオーバーロードはありません。

あなたは一つの命令をスキップしようとしましたが、失われたatoi(temp.c_str());

1

atoiの代わりにstoiを使用する必要があります。

stoiは、atoiがパラメータとして、const char*をパラメータとし、std::stringをパラメータとする。

そして、stoiは、C++ 11以降に新しくなったことを忘れないでください。

+0

私のクラスでは、hw submission serverが完全に互換性がないため、C++ 11を使用することはお勧めできません。それにもかかわらず、私がstoiを使ってみると、 "stoi 'への呼び出しのための一致する機能がないというエラーが表示されました。私は関数を間違って呼び出しているのですか、#include文を忘れていますか? –

+0

あなたのコードをここに投稿するのはどうですか?ThunderBow98 – Jiahao

+0

書式設定はコメントにはひどいので、OPをチェックしてください。 –

0

を呼び出す必要があります。 puzzle_file >> tempは、ではなくpuzzle_fileを返します。したがって、atoiをboolに変換された入力ストリームに適用します。使用:

int len, width; 
puzzle_file >> len >> width; 
if (! puzzle_file)... 
関連する問題