我想通過使用stoi將字符串轉換爲int,但由於某種原因它給了我一個錯誤並給我這個消息:與stoi有關的奇怪錯誤?
「libC++ abi.dylib:以未捕獲的類型異常std :: invalid_argument:stoi:no conversion「
處理stoi的行以粗體顯示,朝向代碼的底部。
這裏是我的代碼:
#include "LongDistanceCalls.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <iterator>
using namespace std;
string line;
string temp = "";
string beginning_time;
void convertTimeintoInt(string beginning_time)
{
for(char a : beginning_time)
{
if(a == ':')
continue;
else
temp += a;
}
}
int main()
{
ifstream inFile;
string day;
int minutes;
double total_callpay;
//opens .txt file
inFile.open("CallRecords.txt");
//if .txt file is openable, printed to command line.
if (inFile.is_open())
{
cout<<"Day Time Duration Cost"<<endl;
while(getline(inFile,line))
{
istringstream split(line);//splits each string into 3 seperate strings (day, beginning_time, minutes)
while(split)
{
split >> day;
split >> beginning_time;
split >> minutes;
**int time = stoi(temp);**
time = time > 0 && time < 2400;
'temp'只是一個空字符串,你似乎沒有在程序中的其他任何地方設置它。 – ArchbishopOfBanterbury
從[documentation](http://en.cppreference.com/w/cpp/string/basic_string/stol):異常 std :: invalid_argument如果不能執行轉換 std :: out_of_range如果轉換後的值會不在結果類型的範圍內,或者如果基礎函數(std :: strtol或std :: strtoll)將errno設置爲ERANGE。 – AndyG
您的全局變量'temp'不會在'main'中的任何地方更新,也不會在'main'中調用任何函數。使用調試器可以讓你看到崩潰時'temp'中的值。 – crashmstr