2014-10-02 56 views
0

使用字符和字符串禁用空白跳過時,行爲是不同的。似乎提取整個字符串(包括空白字符)的唯一方法是使用字符和noskipws。但是對於字符串來說這是不可能的,因爲它不會在第一個空格之後提取。字符提取與字符串提取有何不同?

std::string test = "a b c"; 
char c; 
std::istringstream iss(test); 
iss.unsetf(std::ios_base::skipws); 
while (iss >> c) 
    std::cout << c; 

將輸出a b c但變化℃至弦和它只輸出a

+1

http://stackoverflow.com/questions/21820867/why-does-stdoperatoristream-char-extract-whitespace – 0x499602D2 2014-10-02 18:06:10

回答

2

>>運算符爲一個字符串提取單詞,並在 停止在它看到的第一個空格。如果它不跳過初始白色 空間,則它立即停止,並返回一個空字符串。

你不說你想如何分隔字符串。要閱讀 直到行尾,只需使用std::getline。要讀取直到 文件的末尾,你可以使用類似:

std::istringstream collector; 
collector << iss.rdbuf(); 
std::string results = collector.str(); 

這不是最有效的,但如果該文件是小,它會 做。