C++ 为什么std::istream::gcount返回的字符比预期的多一个
我只是想知道为什么这个标准函数在cplusplus.com上返回的示例代码的字符数为9C++ 为什么std::istream::gcount返回的字符比预期的多一个,c++,C++,我只是想知道为什么这个标准函数在cplusplus.com上返回的示例代码的字符数为9 // cin.gcount example #include <iostream> // std::cin, std::cout int main () { char str[20]; std::cout << "Please, enter a word: "; std::cin.getline(str,20); std::cout << std
// cin.gcount example
#include <iostream> // std::cin, std::cout
int main () {
char str[20];
std::cout << "Please, enter a word: ";
std::cin.getline(str,20);
std::cout << std::cin.gcount() << " characters read: " << str << '\n';
return 0;
}
//cin.gcount示例
#包括//标准::cin,标准::cout
int main(){
char-str[20];
std::cout,因为回车键。按enter键时,会出现换行符(“\n”
)被输入到流中。getline
读取该换行符,将文本存储在数组中,然后读取并丢弃该换行符。因此,当您读取simplify
时,实际上读取的是9个字符的simplify\n
。是因为回车键。当您按enter键时,一个换行符('\n'
)在C++中,代码> > GETLION/CODE >读取该新行,将文本存储在数组中,然后读取并丢弃新行。因此,当您阅读<代码>简化< /C> >时,您实际上读取了 Simult\N\/Cuff>这是9个字符。真的应该改用
例如,cppreference声明如下:
行为类似于未格式化的PutFunction。在构造和检查sentry对象后,从*this
中提取字符,并将其存储在数组的连续位置,该数组的第一个元素由s
指向,直到出现以下任一情况(按所示顺序测试):
- 输入序列中出现文件结束条件(在这种情况下执行
setstate(eofbit)
)
- 下一个可用字符
c
是分隔符,由Traits::eq(c,delim)
确定。分隔符被提取(与basic\u istream::get()
)并向gcount()
计数,但不被存储。
- 已提取
count-1
字符(在这种情况下执行setstate(failbit)
)
如果函数未提取字符(例如,如果count<1
),则执行setstate(failbit)
CPluPlus的声明如下:
对于第一种形式,定界字符是换行符('\n');对于第二种形式,定界字符是delim
:当在输入序列中找到时,它从输入序列中提取,但被丢弃,并且不会写入s
通过调用成员gcount
可以访问此函数成功读取和存储的字符数
这有点误导,因为这意味着getline()
只对存储在用户缓冲区中的字符计数,但分隔符不存储在缓冲区中,但它仍然对gcount()计数 > 通常被许多人认为是C++文档的一个糟糕的站点。你应该使用它。
例如,cppreference声明如下:
行为类似于未格式化的PutFunction。在构造和检查sentry对象后,从*this
中提取字符,并将其存储在数组的连续位置,该数组的第一个元素由s
指向,直到出现以下任一情况(按所示顺序测试):
- 输入序列中出现文件结束条件(在这种情况下执行
setstate(eofbit)
)
- 下一个可用字符
c
是分隔符,由Traits::eq(c,delim)
确定。分隔符被提取(与basic\u istream::get()
)并向gcount()
计数,但不被存储。
- 已提取
count-1
字符(在这种情况下执行setstate(failbit)
)
如果函数未提取字符(例如,如果count<1
),则执行setstate(failbit)
CPluPlus的声明如下:
对于第一种形式,定界字符是换行符('\n');对于第二种形式,定界字符是delim
:当在输入序列中找到时,它从输入序列中提取,但被丢弃,并且不会写入s
通过调用成员gcount
可以访问此函数成功读取和存储的字符数
这有点误导,因为这意味着getline()
只对存储在用户缓冲区中的字符计数,但分隔符不存储在缓冲区中,但它仍然对结尾处的gcount()
\n
计数?\n
计数?