在下面的 C++ 代码中,我意识到gcount()
返回的数字比我想要的要大,因为getline()
消耗了最后的换行符,但没有将其发送到输入流。
不过,我仍然不明白的是程序的输出。对于输入“Test\n”,为什么会得到“est\n”?为什么我的错误会影响字符串的第一个字符而不是在末尾添加不需要的垃圾?为什么程序的输出与调试器中字符串的外观不一致(“Test\n”,正如我所料)?
#include <fstream>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main()
{
const int bufferSize = 1024;
ifstream input( "test.txt", ios::in | ios::binary );
vector<char> vecBuffer( bufferSize );
input.getline( &vecBuffer[0], bufferSize );
string strResult( vecBuffer.begin(), vecBuffer.begin() + input.gcount() );
cout << strResult << "\n";
return 0;
}