首页 > 解决方案 > 循环仅适用于第一行。其他行不受for影响

问题描述

我正在练习阅读文件并编辑内容。输入将类似于:

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();
        }

标签: c++for-loopwhile-loop

解决方案


由于ifor循环中使用未初始化,您的代码具有未定义的行为。

将行更改为

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

推荐阅读