Строка — Стои и Столл в переполнении стека

У меня есть #include (string) в моих декларациях в верхней части программы, но когда я пытаюсь запустить stoi (string) или stoll (string), я получаю следующую ошибку. Я использую Cygwin g ++ v4.5.3.

Z: \ G \ CSCE 437> g ++ convert.cpp -o conv
convert.cpp: в функции void transfer(std::string*)':
convert.cpp:103:36: error:
Столл не был объявлен в этой области
convert.cpp: 116: 35: ошибка: `stoi ‘не было объявлено в этой области

    fileTime[numRec] = stoll(result[0]);    //converts string to Long Long
if(numRec = 0){
beginningTime = fileTime[0];
}
fileTime[numRec] = timeDiff;
hostName[numRec] = result[1];
diskNum[numRec] = stoi(result[2]);
type[numRec] = result[3];
offset[numRec] = stoi(result[4]);
fileSize[numRec] = stoi(result[5]);
responseTime[numRec] = stoi(result[6]);`

Где результат — массив строк.

3

Решение

Эти функции являются новыми в C ++ 11, и GCC делает их доступными, только если вы укажете эту версию языка с помощью параметра командной строки -std=c++11 (или же -std=c++0x на некоторых старых версиях; Я думаю, что вам нужно это для версии 4.5).

Если по какой-то причине вы не можете использовать C ++ 11, вы можете конвертировать с использованием потоков строк:

#include <sstream>

template <typename T> from_string(std::string const & s) {
std::stringstream ss(s);
T result;
ss >> result;    // TODO handle errors
return result;
}

или, если вы чувствуете себя мазохистом, С функционирует следующим образом: strtoll объявлено в <cstring>,

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]