2014-02-05 17 views
3

我是C++的新手,我試圖讓一個簡單的程序啓動並運行。Stringstream的Str方法不起作用。 (不同類型的連接)(C++)

我在Windows系統上使用Eclipse IDE(C++版本)。

我想連接一個輸出語句,它會結合數字和字符串。

我知道在Java中,這是用System.out.println()方法自動完成的。

我能研究的是在C++中實現這個功能的一個好方法是使用字符串流方法。

#include <iostream> 
#include <string> 
#include "Person.h" 

...

string simpleOutput(){ 
    stringstream ss; 

    int a = 50; // for testing purposes 
    int b = 60; 
    string temp = "Random"; 
    ss << a << b << temp; 
    return string output = ss.str(); 


} 

當我嘗試編譯這個代碼是得到如下:「方法‘STR’無法解析

我還沒有上找到一個解決方案任何網頁。 牛逼 謝謝!

+0

@Psypher我根本不知道該怎麼做你參考。 OP **不會**使用'stringstream' –

+1

@IvayloStrandjev也許'stringsteam'(缺少'r')? – Angew

+0

我看到「stringsteam」,而不是「stringstream」(或者說它遲到讓我讀到SO)。 – WhozCraig

回答

1

您的主要問題是,你錯過的包括:

#include <sstream> 

此外,你必須在功能的錯字,你的回報聲明是徹頭徹尾的瘋狂。隨着這些修補程序,它的工作原理:

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

string simpleOutput(){ 
    stringstream ss; 

    int a = 50; // for testing purposes 
    int b = 60; 
    string temp = "Random"; 
    ss << a << b << temp; 
    return ss.str(); 
} 

See it live

+0

輸入這個確切的代碼塊仍然導致Eclipse注意到一個錯誤:「方法」str「無法解決」 – user2879101

+0

eclipse重新啓動代碼後,任何想法爲什麼發生這種情況? – user2879101

+0

@ user2879101可能是包含文件的陳舊緩存。順便說一句,「方法'str'無法解決。」聽起來更像來自IDE的消息而不是來自編譯器的消息。這是一個實際的編譯錯誤,還是IDE的自動完成抱怨? – Angew

1

爲了使用stringstream你需要#include <sstream>。此外stringstream是在std命名空間中定義的,但是從您的代碼看來您已經在使用該命名空間了。代碼的其他部分對我來說似乎是正確的。

1

您通過stringstream預先聲明被困 - 只是#include <sstream>

還可以使用std::stringstreamstd::stringreturn ss.str()(即刮string output

另外:在頭部放置一個命名空間使用的std ::(全球範圍)不好。 請參閱:Using std Namespace

+0

感謝您的提示!在我最初的代碼中,我使用std名稱空間,是否有我不應該使用它的原因? – user2879101

+0

@ user2879101看看鏈接 –

+1

沒關係,代碼現在可以在Eclipse重啓後運行。任何關於爲什麼需要Eclipse重新啓動才能正確編譯代碼的想法? – user2879101