Possible Duplicate:
How to parse a string to an int in C++?어떻게 C++ 문자열을 int로 변환합니까?
어떻게 C++ 문자열을 int로 변환합니까?
문자열에 실제 숫자 ("1", "345", "38944"등)가 있어야한다고 가정하십시오.
또한 부스트가없는 것으로 가정하고, 실제로 C++ 방식으로하고 싶다고 가정 해 봅시다.
Possible Duplicate:
How to parse a string to an int in C++?어떻게 C++ 문자열을 int로 변환합니까?
어떻게 C++ 문자열을 int로 변환합니까?
문자열에 실제 숫자 ("1", "345", "38944"등)가 있어야한다고 가정하십시오.
또한 부스트가없는 것으로 가정하고, 실제로 C++ 방식으로하고 싶다고 가정 해 봅시다.
C++ 스트림을 사용하십시오.
std::string plop("123");
std::stringstream str(plop);
int x;
str >> x;
/* Lets not forget to error checking */
if (!str)
{
// The conversion failed.
// Need to do something here.
// Maybe throw an exception
}
ps. 이 기본 원칙은 부스트 라이브러리 lexical_cast<>
의 작동 방식입니다.
내가 가장 좋아하는 방법은 부스트 lexical_cast<>
#include <boost/lexical_cast.hpp>
int x = boost::lexical_cast<int>("123");
그것은 다시 문자열 및 숫자 형식 사이에 변환 할 수있는 방법을 제공합니다. 아래에는 문자열 스트림을 사용하므로 스트림에 마샬링 된 다음 스트림에서 언 마샬링 될 수있는 모든 것 (>> 및 < < 연산자 참조).
특히 C++이 아닙니까? std :: atoi는 실제로 C++가 아닙니다. –
atoi()는 다른 공백을 무시하고 공백이 아닌 공백을 무시하고 "0"이 유효한 오류 조건이라고 가정합니다. 정말로 타당성에 대해 신경 쓰지 않는 경우에만 atoi()를 사용하십시오. 그렇지 않으면 C에서 strtod()를, C++에서는 std :: istringstream을 사용합니다. –
#include <sstream>
// st is input string
int result;
stringstream(st) >> result;
오류가 있으면 어떻게됩니까? 문자열에 숫자가 없다고 가정 해보십시오 ("5"대신 "hello!"). – krupan
그런 다음 오류를 확인하십시오 : (stringstream (st) >> result)? cout << 결과 : cerr << "잃어버린다"; –
는 변환에 참가했다. 정확히 당신이 이 atoi 함수를 사용하지 이유가 내가 질문을 오해하고 아마도
#include <sstream>
int main()
{
char* str = "1234";
std::stringstream s_str(str);
int i;
s_str >> i;
}
응? 이 "stdapi.h"로 검색하면 아무 것도 나타나지 않습니다. "shlwapi.h"(Windows 전용, 쉘 DLL의 일부이며 오래된 C 방법과 동일 함)를 의미합니까? – bk1e
내가 전에 다음과 같은 C++에서 코드 같은 것을 사용했다? 바퀴를 재발 명할 필요가 없습니다.
여기에 요점이 누락 되었습니까?
확인. 누군가 이미 이것을 제안 했으므로 나는 그것들을 올렸습니다. – ayaz
C++ FAQ 라이트
[39.2] 나는 수에 표준 : : 문자열을 변환하려면 어떻게합니까?
https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num
구성 가능한 fail_on_leftover와 함께 가장 좋은 방법은 imho입니다. –
"fail_on_leftover"란 무엇입니까? –
나를 오류에
#include <boost/lexical_cast.hpp>
int val = boost::lexical_cast<int>(strval) ;
그것은 발생 bad_lexical_cast
lexical_cast 부스트 :: 내 투표를 추가 할 수 있습니다.
다음은 몇 가지 예입니다. http://www.codeproject.com/KB/recipes/Tokenizer.aspx 매우 효율적이고 다소 우아합니다. –