循环仅适用于第一行。其他行不受for的影响

时间:2018-10-04 18:20:23

标签: c++ for-loop while-loop

我正在练习读取文件并编辑内容。输入如下:

2 2 3 -1

3 3 -1 3  

我想使-1无效。它适用于第一行,所以我得到:

2 2 3 

3 3 -1 3  

但是如您所见,在其他行上它不会编辑。我的循环有什么问题?我是C ++的新手,所以感到困惑。另外,英语不是我的母语,所以很抱歉!

if (fin.is_open())
        {
          while ( getline (fin,line) )
            {
              for (int i; i<line.size(); i++){
                if(line[i] == '-'){
                  line[i] = ' ';
                  line[i+1] = ' ';
                }
              }
              cout << line << '\n';
            }
          fin.close();
        }

1 个答案:

答案 0 :(得分:2)

由于在i循环中使用了未初始化的for,因此您的代码具有未定义的行为。

将行更改为

for (int i = 0; i<line.size(); i++){
//           ^^ Need that