比较输入值与从文件读取值的最佳方法

时间:2012-03-09 04:57:35

标签: c++

我对c ++编程比较陌生,而且我在所有这些中遇到了我的第一个主要障碍......

我试图弄清楚如何从记事本上的通用“.txt”文件中读取值/字符。通过这种比较,我想确定是否读取整行,但我似乎无法读取单个一位或两位数字,我得到它使用{'buffername'.getline(变量)读取整行,但是当我尝试将'size'更改为特定数字时,它会给我一个比较错误,说它无效,切换到'int'或'char'(取决于我如何声明变量)。

感谢任何帮助。     感谢

3 个答案:

答案 0 :(得分:0)

您需要使用ifstream来获取值( ref 1 )。

以下内容应该有效。这里我使用std :: string类型的单词,但你可以用其他类型替换它来读取它们(即:int,double等等)。

std::ifstream f("somefile.txt");   
std::string word;
std::string line;

if(f >> word){
    if(<the comparison>){
        line = f.getline();
    }
}

Here's an extended example of how to use the ifstream

答案 1 :(得分:0)

  int length = 2;
  char * buffer;    
  ifstream is;
  is.open ("test.txt", ios::binary );    

  // allocate memory:
  buffer = new char [length];

  // read 2 char
  is.read (buffer,length);

  //Compare the character and decide     

  delete[] buffer;
  return 0;

答案 2 :(得分:0)

首先,出于性能原因,一次读取1个字节是个坏主意。

我建议这个替代方案:

最好在整行读取,然后使用字符数组。

char variable[1000];

将您的行从文件读入变量。

if (variable[1]=='c') { printf("Byte 2 (remember 0 offset) is compared for the letter c";}

获得2位数#

number=((variable[3]-48)*10)+(variable[4]-48);

你必须减去48因为在ASCII中数字0是48。