This question already has answers here:
No Member named stoi in namespace std
(3个答案)
5年前关闭。
编辑:此问题已被标记为重复。实际上,我确实仔细研究了我可以找到但尚未找到答案的所有类似问题。基本上,我无法控制程序的编译方式(尽管我认为它已经在使用c++ 11),所以我正在寻找导致stoi在这种情况下不起作用的原因,或者正在寻找任何其他可以服务的替代语句相同的目的。
我对C++来说还很陌生,正在为这个项目从事类教学。它必须通过myprogramminglab.com提交,因此我无法修改编译器。我遇到的问题是出现以下错误:
从谷歌搜索中我了解到,这通常意味着我的编译器未针对C++ 11配置。但是就像我说的那样,我无法控制myprogramminglab的这一方面。我在我的代码中丢失了一些可能能够启动并运行stoi的东西吗?否则,是否有我可以使用的“旧”方法?我在书中找不到一个好的解决方案(尽管我承认我可能只是不知道要寻找什么),并且直到我克服了此编译错误,才能测试其余的代码。
如果从代码中看不到,则将其分配为以HH:MM xm格式输入,并计算两次之间的分钟数,并输出以分钟(以及小时和分钟)为单位的差异。我还必须使用一个带有提到的参数的名为computeDifference的函数(尽管我添加了字符串参数,因为我想让该函数之外的输入)。
我已经尝试了几种不同的方法,例如没有std::部分。但这似乎给了我最少的错误...
任何帮助将不胜感激!谢谢!
(3个答案)
5年前关闭。
编辑:此问题已被标记为重复。实际上,我确实仔细研究了我可以找到但尚未找到答案的所有类似问题。基本上,我无法控制程序的编译方式(尽管我认为它已经在使用c++ 11),所以我正在寻找导致stoi在这种情况下不起作用的原因,或者正在寻找任何其他可以服务的替代语句相同的目的。
我对C++来说还很陌生,正在为这个项目从事类教学。它必须通过myprogramminglab.com提交,因此我无法修改编译器。我遇到的问题是出现以下错误:
CTest.cpp: In function 'void getTime(int&, int&, bool&, std::string)':
CTest.cpp:38: error: 'stoi' is not a member of 'std'
CTest.cpp:39: error: 'stoi' is not a member of 'std'
从谷歌搜索中我了解到,这通常意味着我的编译器未针对C++ 11配置。但是就像我说的那样,我无法控制myprogramminglab的这一方面。我在我的代码中丢失了一些可能能够启动并运行stoi的东西吗?否则,是否有我可以使用的“旧”方法?我在书中找不到一个好的解决方案(尽管我承认我可能只是不知道要寻找什么),并且直到我克服了此编译错误,才能测试其余的代码。
如果从代码中看不到,则将其分配为以HH:MM xm格式输入,并计算两次之间的分钟数,并输出以分钟(以及小时和分钟)为单位的差异。我还必须使用一个带有提到的参数的名为computeDifference的函数(尽管我添加了字符串参数,因为我想让该函数之外的输入)。
#include <iostream>
#include <string>
using namespace std;
int computeDifference(int hours_par, int minutes_par, bool isAM_par, int hoursF_par, int minutesF_par, bool isAMF_par);
void getTime(int& minutes, int& hours, bool& isAM);
int main()
{
int hours, minutes, fut_hours, fut_minutes, difference;
bool isAM, fut_isAM;
cout << "Enter start time, in the format 'HH:MM xm', where 'xm' is\n";
cout << "either 'am' or 'pm' for AM or PM:";
getTime(hours, minutes, isAM);
cout << "Enter future time, in the format 'HH:MM xm', where 'xm' is\n";
cout << "either 'am' or 'pm' for AM or PM:";
getTime(fut_hours, fut_minutes, fut_isAM);
difference = computeDifference(hours, minutes, isAM, fut_hours, fut_minutes, fut_isAM);
cout << "There are " << difference << " minutes (" << (difference - (difference%60))/60 << " hours and " << difference%60 << " minutes) between" << hours << ":" << minutes<< " and " << fut_hours << ":" << fut_minutes;
return 0;
}
int computeDifference(int hours_par, int minutes_par, bool isAM_par, int hoursF_par, int minutesF_par, bool isAMF_par) {
int start_total = 0, future_total = 0;
start_total += hours_par * 60;
start_total += minutes_par;
if (isAM_par)
start_total += 720;
future_total += hoursF_par * 60;
future_total += minutesF_par;
if (isAMF_par)
future_total += 720;
return future_total - start_total;
}
void getTime(int& minutes, int& hours, bool& isAM, string timestamp) {
string hoursS, minutesS;
hoursS = timestamp.substr(0, 2);
minutesS = timestamp.substr(3, 2);
hours = std::stoi(hoursS);
minutes = std::stoi(minutesS);
isAM = ("am" == timestamp.substr(6, 2));
cout << hours << " " << minutes << " " << isAM;
cout << timestamp;
}
我已经尝试了几种不同的方法,例如没有std::部分。但这似乎给了我最少的错误...
任何帮助将不胜感激!谢谢!
最佳答案
std::stoi
是c++ 11可用的功能,因此,如果您具有C++ 11可用的编译器,请提供编译器选项-std=c++11
否则,请使用atoi()
代替stoi()
,如下所示:
#include<cstdlib>
hours = std::atoi(hoursS.c_str());
minutes = std::atoi(minutesS.c_str());
关于c++ - 我在myprogramminglab中收到错误 “stoi is not a member of std” ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31253604/
10-09 13:35