2013-09-02 2 views
0

자릿수가 있습니다. Istringstream을 사용하여 문자열의 각 숫자를 int 유형으로 인쇄하려고합니다. 그것은 main에서 변환 함수에 인수로 전체 문자열을 전달하면 정상적으로 작동하지만 인덱스로 전달하면 오류가 발생합니다.문자열을 int로 변환하는 istringstream() 함수는 오류를 발생시킵니다.

이 코드가 인덱스를 사용하여 문자열 배열의 각 숫자를 int로 인쇄하는 방법.

여기 내 코드입니다. strToNumstring, 따라서 입력 오류를 예상하면서

#include <iostream> 
#include <string> 
#include <sstream> 
using namespace std; 

int strToNum(string str) 
{ 
    istringstream ss(str); 
    int n; 
    ss>>n; 
    cout<<n; 
} 

int main() 
{ 
string str = "123"; 
for(int i=0; i<str.length(); i++) 
//strToNum(str); Works fine 
strToNum(str[i]); //raises error 
} 

답변

2

다른 사람이 오류를 설명해주었습니다.

strToNum(std::string(1, str[i])); 

을하지만 대신 할 거라고 :

for(int i=0; i<str.length(); i++) 
    cout << str[i] - '0'; 

을하지만 당신은 정말이 필요하면 스스로에게 물어 이것은 당신이 일을 만들 수있는 방법이다. 가치 또는 표현에 관심이 있습니까? 후자의 경우 char을 인쇄하십시오.

+0

내 코드에서 다음 – enterprize

+0

@enterprize을 값을 사용할 필요가 기본적으로없는 표현 벡'STR의 [을 숨길 그렇지 않으면 필요 i] - '0'은 필요한 것입니다. – jrok

+0

나는이 코드가 왜 작동하지 않는지를 좋아했다. 나는 그것이 lop을 위해 1 & 2 & 3 시간 내부 반복을 기대하지만 3 회만 반복한다. int main() { int n; 문자열 str = "123"; for (int i = 0; i enterprize

5

str[i]char이다. 당신은 모든 istringstream 필요하지 않습니다

for(int i=0; i<str.length(); i++) 
    strToNum(string(1,str[i])); //Convert char to string 

here

4

그것은 오류가 발생합니다 .

int strToNum(char ch) 
{ 
    cout << ch; 
} 
1

를 참조하십시오 str[i] 그러나, strToNum(string str) excepts string

이를 시도해보십시오 char

때문에

0

실제로이 스레드를 생성 한 함수를 작성하는 데 더 유용한 방법 인이 작업을 수행하는 데 템플릿 함수를 사용합니다 (이 단일 함수는 문자열을 숫자 유형으로 변환 할 수 있기 때문에 int, float, double,) 긴 더블 :

#include "stdafx.h" 
#include <string> 
#include <iostream> 
#include <Windows.h> 
#include <sstream> 
#include <iomanip> 
using namespace std; 

template <typename T> 
inline bool StrToNum(const std::string& sString, T &tX) 
{ 
    std::istringstream iStream(sString); 
    return (iStream >> tX) ? true : false; 
} 


void main() 
{ 
    string a="1.23456789"; 
    double b; 
    bool done = StrToNum(a,b); 
    cout << a << endl; 
    cout << setprecision(10) << b << endl; 

    system ("pause"); 
} 

setprecision (10) (iomanip는) istringstream 일부 소수에게

관련 문제