【问题标题】:Best way to compare input values to read values from files比较输入值以从文件中读取值的最佳方法
【发布时间】:2012-03-09 04:57:34
【问题描述】:

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

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

感谢任何帮助。 谢谢

【问题讨论】:

  • 如果您不透露您的程序,最好是完整的,以及您正在使用的示例数据,只有拿着水晶球的向导可以帮助您。

标签: c++


【解决方案1】:
  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】:

您需要使用 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

【讨论】:

    【解决方案3】:

    首先,出于性能原因,一次读取 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-24
      • 2019-12-21
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多