2013-08-28 3 views
0

저는 프로그래밍에 익숙하지 않고 "지출 할 금액이 8 달러입니다."라는 메시지를 읽는 프로그램을 만들어야합니다. 그런 다음 별도의 행에 각 단어와 함께 인쇄 할 필요가 있으며, 문자열의 숫자 인 경우, 따라서 그것이로 출력하기까지 끝나야 2로 나눈 할 필요가 : 내가 가지고있는단어가 숫자 인 경우 C++ stringstream

I 
have 
4 
dollars 
to 
spend. 

숫자 값을 찾아 2로 나누어 제외하고, 모든 일을 관리 지금까지 나는이 있습니다

#include <iostream> 
    #include <string> 
    #include <sstream> 

    using namespace std; 

    int main() 
    { 
string prompt; 
string word; 

cout << "Prompt: "; 

getline(cin, prompt); 

stringstream ss; 
ss.str(prompt); 

while (ss >> word) 
{ 
cout << word << endl; 
} 

return 0; 
} 

다양한 게시물을 통해보고 후, 나는이 작업을 얻을 관리 할 수 ​​없습니다. 나는 if/else 문을 while 루프 내에서 숫자를 기준으로 num/2로 설정 한 다음 038을 설정한다고 가정합니다. < < num < < endl; else cout < < word < < endl ;; 그러나 나는 그것을 이해할 수 없다.

미리 감사드립니다.

답변

1

문자열과 다른 데이터 형식 간의 변환을 처리하는 stringstream 클래스를 사용하여 주어진 문자열을 숫자로 변환하려고 할 수 있습니다. 시도가 성공한 경우 stringstream 개체를 사용하면 문자열을 cin 또는 cout과 비슷한 스트림으로 처리 할 수 ​​있습니다.

은과 같이, 당신의 while 루프로 이것을 통합 :

while (ss >> word) 
{ 
int value = 0; 
stringstream convert(word); //create a _stringstream_ from a string 
//if *word* (and therefore *convert*) contains a numeric value, 
//it can be read into an _int_ 
if(convert >> value) { //this will be false if the data in *convert* is not numeric 
    cout << value/2 << endl; 
} 
else 
    cout << word << endl; 

} 
+0

아이 일이, 정말 감사합니다. 실제로 stringstream convert (word)를 포함하지 않았다는 것을 제외하고는 거의 동일한 것을 시도했습니다. 정말 도움을 주셔서 감사합니다. – Tyler

0

std::string에서 직접 작동하는 C++ 11 버전 : std::stol) 함수는 문자열에 숫자가 있는지 여부를 테스트하고, 그렇다면 숫자 값이 무엇인지 테스트하는 데 정말 좋습니다.

또는 숫자 (int 또는 double)의 압축을 풀어보십시오. 오류가 발생하면 오류 비트를 지우고 문자열을 읽으십시오.

0

저는 50 명의 담당자가 없으므로 주석을 쓰지 않습니다. 왜 내가 대답으로 쓰고 있는지. 두 문자 사이에 숫자를 나타내는 ascii 값이있는 경우 각 문자의 ASCII 값 (&)을 사용하여 문자 단위로 문자를 검사 할 수 있다고 생각합니다 (이 경우 두 단어는 이미 각 단어를 구분 했으므로 \ n). 숫자를 2로 나눕니다.

관련 문제