atoi()没有按预期工作

时间:2017-03-17 05:20:47

标签: c++ std atoi

#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

上述代码应该读入文件并将数字存储在相应的整数中。我收到了一条错误消息,指出&#34;没有匹配功能来拨打&#39; atoi&#39;&#34;,即使我有#include&lt; \ cstdlib&gt;和#include&lt; \ stdlib.h&gt;在我的文件标题中。不确定从这里去哪里。对stackoverflow和其他论坛进行了一些研究,无法找到真正帮助我的东西。有什么建议?感谢

3 个答案:

答案 0 :(得分:1)

您应该使用stoi代替atoi

stoistd::string为参数,atoiconst char*为参数。

并且不要忘记{c} 11以来stoi是新的。

答案 1 :(得分:0)

puzzle_file >> temp表达式返回istream,但没有atoi重载可以接受这样的参数。

您应该致电atoi(temp.c_str());

答案 2 :(得分:0)

你试图跳过一条指令而丢失了。 puzzle_file >> temp返回puzzle_file而非temp。因此,您将atoi应用于转换为bool的输入流。使用:

int len, width;
puzzle_file >> len >> width;
if (! puzzle_file)...