2013-02-07 71 views
-2

給定一個包含字符串「Hello World」的文件(注意'Hello'和'World'之間有空格)。如何僅通過' n'在istream中分隔字符串?

int main() 
{ 
    ofstream fout("test.txt"); 
    fout.write("Hello World", 12); 
    fout.close(); 

    ifstream fin("test.txt"); 
    vector<string> coll((istream_iterator<string>(fin)), 
         (istream_iterator<string>())); 
    // coll contains two strings 'Hello' and 'World' rather than 
    // one string "Hello World" that is just I want. 
} 

換句話說,我想在一個IStream字符串應該只有「\ n」,而不是「」,「\ n」分隔等

我應該怎麼辦?

回答

5

改爲使用std::getline(std::cin,str)。第三個參數是你想要的,默認爲'\n'。另外,您可以通過設置使std::cin >> std::noskipws >> str禁止跳過空白或做std::cin.unsetf(std::ios::skipws)

+0

我修改了原來的帖子。請查閱。 – xmllmx

1
string str; 
while(fscanf(fin,"%s\n",&str)); 
2

來讀取ifstream線完全關閉的標誌,你可以使用std::getline。默認分隔符std::getline\n

int main(int argc, const char * argv[]) 
{ 
    ifstream fin("test.txt"); 
    std::string str; 

    while (std::getline(fin, str)) 
    { 
     cout << str << endl; 
    } 

    return 0; 
} 
+0

我修改了原帖。請查閱。 – xmllmx

相關問題