Ich versuche, eine Zeichenfolge in einen int zu konvertieren, indem stoi verwenden, aber aus irgendeinem Grunde ist es mir einen Fehler geben und mir diese Botschaft geben:Sonderbarer Fehler im Zusammenhang mit stoi?
„libC++ abi.dylib: mit abgefangene Ausnahme des Typs beendet std :: invalid_argument: stoi: keine Konvertierung "
Die Zeile, die sich mit stoi beschäftigt, ist am unteren Rand des Codes fett geschrieben.
Hier ist mein Code:
#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' ist nur ein leerer String, Sie scheinen ihn nirgendwo anders im Programm einzustellen. – ArchbishopOfBanterbury
Aus der [Dokumentation] (http://en.cppreference.com/w/cpp/string/basic_string/stol): Ausnahmen Std :: Invalid_argument Wenn keine Konvertierung durchgeführt werden konnte Std :: Out_of_range, wenn der konvertierte Wert würde fallen außerhalb des Bereichs des Ergebnistyps oder wenn die zugrunde liegende Funktion (Std :: Strtol oder Std :: Strtoll) Errno auf ERANGE setzt. – AndyG
Ihre globale Variable 'temp' wird nirgendwo in' main' oder durch irgendeine in 'main' aufgerufene Funktion aktualisiert. Wenn Sie einen Debugger verwenden, können Sie sehen, welcher Wert zum Zeitpunkt des Absturzes in 'temp' war. – crashmstr