ifstream输出上的奇怪字符

时间:2011-07-23 15:36:54

标签: c++

#include <iostream>
#include <string>
#include <fstream>
#include <cstring>

using namespace std;

int main(){
  char a;

  cout << "give me the filename: ";
  cin >> filename;

  ifstream caroll;
  caroll.open(filename.c_str());

  while (a=caroll.get() && !caroll.eof()){
    cout << a << "    ";
  }

  caroll.close();
}

我的输出充满了怪异的字符。它们就像是填充了2 0和2 1的小方块。

1 个答案:

答案 0 :(得分:5)

请打开编译器警告级别。这里有一个错误:

while (a=caroll.get() && !caroll.eof()) {

这被解释为:

while (a = (caroll.get() && !caroll.eof()) ) {
           ^                             ^

您需要在作业周围添加括号:

while ((a = caroll.get()) && !caroll.eof() ) {
       ^                ^
海湾合作委员会对此发出警告。

(注意:请发布已编译的代码,您的示例中未声明filename,并且当您应该包含cstring时,您应包含string。)