当禁用使用字符和字符串跳过空格时,行为会有所不同。似乎提取整个字符串(包括空白字符)的唯一方法是使用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
。
答案 0 :(得分:2)
字符串的>>
运算符提取单词,然后停在
它看到的第一个白色空间。如果它没有跳过初始白色
空格,然后立即停止,并返回一个空字符串。
你不会说你希望如何划分字符串。阅读
直到行结束,只需使用std::getline
。阅读直至
文件的结尾,你可以使用类似的东西:
std::istringstream collector;
collector << iss.rdbuf();
std::string results = collector.str();
它不是最有效的,但如果文件很小,它会 做。