2014-11-11 3 views
3

아래 코드에서 int를 문자열로 변환하려고합니다.int를 문자열로 변환하려고 시도했습니다.

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

int num = 1; 
ostringstream convert; 
convert << num; 
string str = convert.str(); 

는 그러나, 나는 내가 뭘 잘못 오류 메시지

Line 7: error: expected constructor, destructor, or type conversion before '<<' token

를 얻을? 이것은 기본적으로 모든 사람들이 int를 문자열로 변환하도록 권장하는 것과 동일한 코드 스 니펫입니다.

+1

당신이 '주()'함수가 없습니다 : 코드 이런 식으로 뭔가를 찾고 종료됩니다 이러한 변경으로

? (오류를 재현 할 수있는 작은 코드 예제를 제공 한 경우 +1!) – moooeeeep

+0

오 볼. 건배. –

+1

main()이 필요없는 코드가 있습니까? –

답변

3

두 가지 문제가 있습니다. 먼저 main이 누락되어 나중에이 코드가 최상위 수준에서 유효하지 않습니다 (예 : main/functions/etc 외부). 프로그램을 컴파일 할 때 컴파일러는 main을 찾아서 그 시점부터 코드를 실행하기 시작합니다. 메인 전에 허용되는 몇 가지 사항이 있지만이 표현은 그 중 하나가 아닙니다. 그 이유는 당신이 뭔가를 계산하려하지만 프로그램 흐름이 실제로 거기에 가지 않기 때문에 컴파일러는 어떻게 그 코드를 언제 실행할 수 있는지 결정할 수 있습니까? 그 순서가 정의되지 않은 메인에서 일어난 순서는 중요합니다. 이 진술은 부작용이 없으므로 게시 한 오류 메시지가 불평하는 내용입니다. 컴파일러는 코드가 실행되기 시작하는 곳에서 main을 찾는다. 그래서 그 이유 때문에 main에 코드를 넣고 싶다. (나는 이것이 이것보다 더 많고 100 % 정확하지는 않지만 이것이 좋은 출발점/발견 적 도구라고 생각한다. 새로운 프로그래머가 더 잘 이해할 수 있도록). 이 질문을 읽는 것이 좋습니다. Is main() really start of a C++ program?

둘째로 네임 스페이스에 문제가 있습니다. ostringstreamstd 네임 스페이스에 있으면 std::ostringstream을 대신 시도하십시오. string의 상황은 비슷합니다. std::string을 사용하십시오.

int main(){ 
    int num = 1; 
    std::ostringstream convert; 
    convert << num; //This isn't allowed outside of main 
    std::string str = convert.str(); 
    std::cout << str; 
    return 0; 
} 
1
#include <string> 
#include <sstream>  // std::stringstream 
#include <iostream> 

int main() 
{ 
    int num = 1; 
    std::stringstream convert; 
    convert << num; 
    std::string str = convert.str(); 
    std::cout << str ; 
    return 0; 
} 
+0

그냥 알다시피 : http://www.parashift.com/c++-faq/main-returns-int.html – shuttle87

+0

@ shuttle87 고마워 :) – Emadpres

관련 문제