C++ Можно создать дубликат:
How to parse a string to an int in C++?Преобразование строки в целое в 03
Есть множество способов, чтобы преобразовать строку в целое в C++ 03. Лучшее, что я нашел до сих пор это:
string text;
cin>>text;
int converted;
if (!(istringstream(text) >> converted)){
cout<<"conversion failed\n";
}
cout<<"the converted string is "<<converted;
Проблема с этим решением является то, что он принимает «12monkeys» и преобразует его в 12 без колебаний. Есть ли простой способ проверить это и вывести «преобразование не удалось» в этом случае?
Просто для того, чтобы отметить, что я пробовал atoi(), atol() и strtol(), но тот факт, что он возвращает 0, если он терпит неудачу, бесполезен. Как я должен знать, была ли строка не «0»? Также нет проверки диапазона (кроме strtol()). Здесь не упоминается проблема «12monkeys».
'повышение :: lexical_cast'. – chris
К сожалению, я не могу использовать boost, поэтому я не могу использовать C++ 11. Я хотел бы найти самое элегантное и простое решение на C++ 03. – Slazer
Вы не можете использовать boost, ** так что ** вы не можете использовать C++ 11? Это не имеет большого смысла. Boost работает с C++ 03, или вы хотели сказать? – chris