"$ :" "213.23453" 과 같은 많은 문자가있는 문자열이 있습니다. 213.23453의 double 값을 어떻게 추출하고 C++/C에 저장합니까? 나는 람다를 사용하지 않는다.문자열이있는 문자열에서 double을 추출하는 중
답변
당신은 첫 번째 자리에 전에 문자를 스킵하는 sscanf
기능의 "가난한 사람의 정규식"을 사용하여 다음과 같이 이중 읽기 수 있습니다 : 첫 번째 비율 후 별표
char *str = "\"$: \" \"213.23453\"";
double d;
sscanf(str, "%*[^0-9]%lf", &d);
주 형식 : sscanf
에 내용을 출력 버퍼에 쓰지 않고 문자열을 읽도록 지시합니다.
여기는 demo on ideone입니다.
정규식을 사용하십시오.
[$]?[0-9]*(\.)?[0-9]?[0-9]?
이것은 $ 기호와없는 사람과 일치해야합니다.
Boost.Regex는 개인적으로 작업하기 훨씬 좋네요을 Boost.Xpressive을 찾을 아주 좋은 정규 표현식 라이브러리
입니다. 이것은 헤더 전용 라이브러리이며 정적 정규식 (컴파일시 컴파일 된 정규식)과 같은 멋진 기능이 있습니다.
C++ 11 호환 컴파일러를 사용하는 경우 다른 이유가없는 한 std::regex을 사용하십시오.
그러나 GCC 4.7을 사용하는'std :: regex'가 제대로 컴파일 되긴하지만 실제로는 매우 기능이 올바르지 않습니다. –
순수 C++ 솔루션은 수동으로 번호 (std::isdigit
에 의해 확인 된 첫 번째 숫자)를 앞 휴지통 문자를 차단 한 후 바로 검색 할 임시 istringstream
객체를 생성하는 수 double
에서 :
std::string myStr("$:. :$$#&*$ :213.23453$:#$;");
// find the first digit:
int startPos = 0;
for (; startPos < myStr.size(); ++startPos)
if (std::isdigit(myStr[startPos])) break;
// cut off the trash:
myStr = myStr.substr(startPos, myStr.size() - startPos);
// retrieve the value:
double d;
std::istringstream(myStr) >> d;
하지만 C- 스타일 sscanf
을 적절히 지정하면 다음과 같이 충분합니다.
- 1. C에서 문자열에서 double을 추출합니다.
- 2. 문자열에서 동일한 문자열 double을 추출하십시오.
- 3. 문자열에서 숫자를 추출하는 중 문제가 발생했습니다.
- 4. 따옴표가있는 문자열에서 키 값 쌍을 추출하는 중
- 5. PHP에서 문자열에서 단어를 추출하는 중 문제가 발생했습니다.
- 6. 문자열에서 정규식을 사용하여 기호를 추출하는 중
- 7. 문자열에서 2 개의 double을 가져옵니다.
- 8. 숫자를 추출하고 문자열에서 double을 작성하십시오.
- 9. 문자열에서 값을 추출하는 방법
- 10. ArrayList에 Double을 저장하는 중
- 11. 콘솔에서 double을 읽는 중
- 12. 입력 문자열이있는 문자열에서 하위 문자열 찾기
- 13. 문자열에서 태그를 추출하는 방법
- 14. 문자열에서 단어를 추출하는 방법
- 15. 문자열에서 문자열을 추출하는 방법
- 16. 문자열에서 숫자를 추출하는 한 줄자.
- 17. 문자열에서 링크를 추출하는 PHP 함수입니다.
- 18. 문자열에서 특정 번호를 추출하는 방법을
- 19. 문자열에서 변수를 추출하는 방법은 무엇입니까?
- 20. 문자열에서 정규 표현식을 추출하는 방법
- 21. 자바 문자열에서 단어를 추출하는 방법
- 22. 문자열에서 연도를 추출하는 정규 표현식
- 23. 리눅스에서 문자열에서 패턴을 추출하는 방법
- 24. 문자열에서 요소를 추출하는 정규 표현식
- 25. 문자열에서 전자 메일을 추출하는 방법
- 26. html 문자열에서 데이터를 추출하는 라이브러리
- 27. 스칼라에서 문자열에서 날짜를 추출하는 방법
- 28. 하이브의 문자열에서 필드를 분리하는 중
- 29. C에서 문자열에서 특정 값을 추출하는 방법 #
- 30. pexpect에서 stderr을 추출하는 중
cpp의 Regex를 시도하십시오. – Prasad
['stod'] (http://en.cppreference.com/w/cpp/string/basic_string/stof) –
먼저 C 또는 C++를 작성하는지 여부를 결정해야합니다. 답은 두 언어에 따라 다릅니다. –