博主初学编程,基础薄弱,很多概念理解不充分,对问题提出的解决方法也是不成熟的,如果大家有更好的解决方法,或者发现文中错误,希望可以留言指教,谢谢!
在GCC下使用getline()函数,若设置读取的字符长度小于文件中改行的字符数,则导致下一行不能正确读取,程序发生错误。
问题代码如下:
unsigned int get_number_of_cpus()
{
ifstream cpuInfo;
cpuInfo.open("/proc/cpuinfo");
char buffer[256];
string str;
unsigned int cpuNr=0;
handle_error("Can't open /proc/cpuinfo",!cpuInfo);//if the file cpuinfo is not opened correctly, report the error and exist
while(!cpuInfo.eof())
{
cpuInfo.getline(buffer,256);
str=buffer;
cout<<str<<endl;
if (!str.compare(0,11,"processor\t:"))
{ cpuNr++;}
}
cpuInfo.close();
return cpuNr;
}
结果如下:
[wtd@localhost cppcode]$ vim getinfo.cpp
[wtd@localhost cppcode]$