char提取与字符串提取有何不同?

时间:2014-10-02 18:00:03

标签: c++

当禁用使用字符和字符串跳过空格时,行为会有所不同。似乎提取整个字符串(包括空白字符)的唯一方法是使用chars和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但是将c更改为字符串,它只输出a

1 个答案:

答案 0 :(得分:2)

字符串的>>运算符提取单词,然后停在 它看到的第一个白色空间。如果它没有跳过初始白色 空格,然后立即停止,并返回一个空字符串。

你不会说你希望如何划分字符串。阅读 直到行结束,只需使用std::getline。阅读直至 文件的结尾,你可以使用类似的东西:

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

它不是最有效的,但如果文件很小,它会 做。