2010-12-22 3 views
0

여기에 무슨 일이 일어나고 있는지 모르겠습니다. 두 개의 문자열을 두 개로 변환하고 첫 번째 문자열은 항상 통과하지만 두 번째 문자열은 변환되지 않으며 어떤 방식 으로든 전환 할 수 있습니다. 여기에 코드입니다 :변환 문자열을 두 번 사용 하시겠습니까?


    #include <iostream> 
    #include <math.h> 
    #include <string> 
    #include <sstream> 
    using namespace std; 

    int main() { 
     string temp; 
     double ax,bx,cx,ay,by,cy; 
     cout << "Enter x and y for point 1 (separated by a comma)"; 
     cin >> temp; 
     int where=temp.find(","); 
     int hmm=temp.length()-where; 
     cout << hmm << endl << where << endl; 
     cin.get(); 
     stringstream ss; 
     string stAx,stAy; 
     stAx= (temp.substr(0,where));stAy = (temp.substr(where+1, hmm-1)); 
     ss << stAx;ss >> ax; 
     ss << stAy;ss >> ay; 
     cout << "Ax: " << ax << endl; 
     cout << "Ay: " << ay << endl; 

     system("pause"); 
     return 0; 
    } 


사람이 내가 잘못 알아낼 수 있습니까?

미리 감사드립니다.

+1

이 코드의 일부가 누락 된 것 같다, 그래서 나는이 당신의 문제가 무엇인지 짐작할 수 있습니다. 하지만 boost :: lexical_cast()를 보셨나요? – Axel

답변

3

문제는 ax 및 ay 모두에 동일한 문자열 스트림을 사용하고 있다는 것입니다. 당신은 ssA와 ssY가 필요합니다. 또는 ss.flush()를 시도하십시오

+0

미안 하다니 죄송합니다. 내가 뭘 하려는지 2 개의 숫자가 쉼표로 구분 된 문자열을받은 다음 문자열을 사용하여 두 개의 숫자 (두 배로) 구분할 :: substr. 내 코드가 좀 혼란스러워, 알아. 주요 문제는 문자열 스트림을 사용하는 부분이었습니다. \t ss << stAx;ss >> ax; \t ss << stAy;ss >> ay; 문자열 stAx를 stringstream을 통해 double ax로 변환했는데 작동했지만 stAy 및 ay가있는 부분이 작동하지 않았습니다. – Joe

+2

'ss.flush()'는 내 컴퓨터에서 문제를 수정하지 않았습니다. 'ss.clear()'. 어쨌든 ssX와 ssY를 권하고 싶지만 그렇지 않다면'ss.clear()가 작동 할 것입니다. –

+0

감사합니다. 그것은 작동합니다! 나는 당신이 현악기를 깨끗하게해야한다는 것을 몰랐습니다. – Joe

1

단순한 방법은 boost :: lexical_cast를 사용하는 것입니다.

부스트를 사용할 수없는 경우 자신 만의 코드를 작성할 수 있습니다 (문자열을 전송할 수 있고 오류 검사를 수행 할 수있는 부스트 버전이 아닙니다. 그러나 간단한 프로그램에서는 충분합니다).

#include <sstream> 
#include <iostream> 

template<typename T> 
inline T MyCast(std::string const & value) 
{ 
    std::stringstream ssinput(value); 

    T result; 
    ssinput >> result; 

    return result; 
} 

int main() 
{ 
    double x = MyCast<double>("12.345"); 
    std::cout << x; 
} 
0

음, 나는 내가 이해하지 못하는 것은 당신이 간단하게 할 수없는 이유는, 당신의 문제가 해결 확신 :

double dx, dy; 
    cout << "enter x and y co-ordinates (separated by a space): " << endl; 
    cin >> dx >> dy; 

    cout << "dx: [" << dx << "], dy:[" << dy << "]" << endl; 
관련 문제