atoi() 没有按预期工作

atoi() not working as expected

#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

上面的代码应该读入一个文件并将数字存储在相应的整数中。尽管我的文件头中有#include <\cstdlib> 和#include <\stdlib.h>,但我收到一个错误 "no matching function for call to 'atoi'"。不确定从这里去哪里。在 Whosebug 和其他论坛上做了一些研究,找不到任何真正帮助我的东西。有什么建议吗?谢谢

你应该使用 stoi instead of atoi.

stoi 接受 std::string 作为参数,而 atoi 接受 const char* 作为参数。

并且不要忘记 stoi 是自 c++11 以来的新功能。

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

你应该打电话给atoi(temp.c_str());

您试图跳过一条指令但失败了。 puzzle_file >> temp returns puzzle_file 而不是 temp。因此,您将 atoi 应用于转换为布尔值的输入流。使用:

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