2013-01-12 58 views
0

我不明白我的程序中的第二個地址是'(readurl), 我通過cout'ing readurl(ifstream)發現它 感謝您的幫助/聲明! (從readurl的ADRESS is'nt一樣cout'ing readurl)
代碼:C++地址,奇怪的地址?

#include <fstream> 
#include <iostream> 
#include <string> 
#include <tchar.h> 
using namespace std; 
int main() 
{ 
    string file; //filepath 
    int sel; //menu-switch 
    cout << "Select your Language!"<<endl; 
    cout << "1:German"<<endl; 
    cout << "2:English"<<endl; 
    cout << "Language: "; 
    cin >> sel; 
    getchar(); 
    system("cls"); 
    switch(sel) 
    { 
     case 2: 
      cout << "Hello!"<<endl; 
      cout << "Select your File: "; 
      cin >> file; 
      getchar(); 
      system("cls"); 
      break; 
     case 1: 
      cout << "Hallo!"<<endl; 
      cout << "Waehle deine Datei aus: "; 
      cin >> file; 
      getchar(); 
      system("cls"); 
    } 
    ifstream readurl(file.c_str()); 
    char url[CHAR_MAX]; 
    while(!readurl.getline(url,CHAR_MAX,'#')) 
    { 
     readurl.ignore(); 
    } 
    cout << endl; 
    cout << &readurl<<endl<<readurl<<endl; // What is readurl? 
    cout << "File: (Sentences with # will be ignored)"<<endl; 
    cout << url; 
    getchar(); 
} 

文本文件看起來像這樣:

This will be readed 
TEST 
TEST 
TEST 
#This wont be readed 
#This can be a comment. 
#lsdjpofiuhpdsouhsdih+g 
+0

你不明白你指的是什麼。請將您的代碼簡化爲證明問題所需的**最低**。 –

+0

我只是想知道readurl是什麼。 – MultiStrikeAUT

+0

'readurl'是您用來讀取輸入文件的'ifstream'。 (或者我錯過了明顯的東西)。 – WhozCraig

回答

1

表達&readurl返回那裏readurl地址在記憶中。當這樣使用時,運營商&稱爲地址運營商。

當你寫出readurl你實際上正在寫實際的對象實例,在這種情況下,它實際上並不是有效的輸出操作。在編譯時你應該得到這個警告,並且你從中得到的值可以是任何東西。


std::cout << readurl的輸出可能是相同operator void*覆蓋,而不是一個有效的地址。

+0

謝謝!這可以關閉 – MultiStrikeAUT

+2

如果這回答你的問題,隨時接受答案;) – Sander

+0

剛剛說... ... :) @MultiStrikeAUT請閱讀[常見問題](http://stackoverflow.com/faq)特別是本節的結尾[「我如何在這裏提問?」](http://stackoverflow.com/faq#howtoask)。 –