【发布时间】:2018-12-08 17:58:13
【问题描述】:
假设我通过使用std::getline() 重载从std::istream 读取std::string。如何确定从流中提取了多少个字符? std::istream::gcount() 不能像这里讨论的那样工作:ifstream gcount returns 0 on getline string overload
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::istringstream s( "hello world\n" );
std::string str;
std::getline( s, str );
std::cout << "extracted " << s.gcount() << " characters" << std::endl;
}
注意,对于downvoters - 字符串的长度不是答案,因为std::getline() 可能会或可能不会从流中提取其他字符。
【问题讨论】:
-
关于
std::string::size的帽子? -
@Galik 分隔符呢?
-
如果
std::getline确实吞下了一个换行符,或者点击了EOF,则需要同时使用size()和eof()进行逆向工程,以获得准确的字符数。 -
@Slava 是的,我只是在想那个......
-
有些人在否决问题之前需要了解更多
C++,因为他们不理解这些问题。