c ++读取输入直到行char数组的结尾

时间:2017-05-01 17:01:17

标签: c++

我试图让我的代码工作,实际上它工作但不是那么好。代码在进入'之后停止出现了。我想让我的代码工作,直到用户输入文件结束。

 #include<iostream>
using namespace std;

int main(){
    char input[2000];


    cin.getline(input, sizeof(input));

    int lol = strlen(input);
    int boing = 0;
    for (int p = 0; p < lol; p++)
    {

        if (input[p] == '\"')
        {
            boing++;
            if (boing % 2 == 1)
            {
                cout << '\`'<<'\`';
            }
            if (boing % 2 == 0)
            {
                cout << '\''<<'\'';
            }
        }
        else
            cout << input[p];
    }

    system("pause");
}

如果我们输入这些词语

  

严格意义上的&#34;&#34;严格意义上的#34;记住。 &#34;   歌曲,但首席有火腿寡妇下降。天才左右的虚荣心不能。   &#39;&#39;```大尝试goi"'&#39;&#39;&#34;&#39;关于水推迟。 &#34;无声&#34;儿子男人,她希望母亲。   不信任津贴做知识渴望保证的补充。   我们&#34;&#34;&#34;&#34;彻底减少偏好&#34;如果。 &#34;欢乐交易痛苦&#39 ;;'392view&#34;很多时间。领导年轻的同性恋者现在会说。&#34;

我的输出变为

  

''my up strictly中分支是记住的。 &#39;&#39;

但它应该是

  

''my up strictly中分支是记住的。 &#39;&#39;歌曲,但首席有   火腿寡妇下降。天才左右的虚荣心不能。 &#39;&#39;```大人试过   goi&#39; ''ng'' about water defer by.无声&#39;&#39;她希望的儿子男人   母亲。不信任津贴做知识的渴望保证   补充。我们''&#39;&#39;缩短偏好thoroughly if. ''Joy deal pain ';`392view。领导年轻的同性恋者现在会说。&#39;&#39;

3 个答案:

答案 0 :(得分:5)

getline将接受输入,直到&#34;输入&#34;按下按钮。 您的代码在我的机器上正常运行。 只需添加string.h头文件,如下所示:

#include<string.h>

这适用于strlen功能。

答案 1 :(得分:4)

您需要将getline包裹在某种形式的循环中。现在你得到1行,然后操纵input然后退出。现在你正在从用户那里取出它,所以你需要寻找终结者。

答案 2 :(得分:4)

对于此代码,您需要另外两个头文件

#include <string.h>
#include <stdlib.h>

您的完整代码将

#include<iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

int main()
{
    char input[2000];


    cin.getline(input, sizeof(input));

    int lol = strlen(input);
    int boing = 0;
    for (int p = 0; p < lol; p++)
    {

        if (input[p] == '\"')
       {
           boing++;
           if (boing % 2 == 1)
           {
               cout << '\`'<<'\`';
           }
           if (boing % 2 == 0)
           {
              cout << '\''<<'\'';
           }
      }
      else
        cout << input[p];
   }

   cout<<endl;   //this line is for making ur code look nice

   system("pause");
}

但我个人建议您使用c ++字符串类进行字符串处理 简单易用

使用字符串类,您的代码将

#include<iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main()
{

   string input;

   getline(cin,input);

   int lol = input.size();

   int boing = 0;
   for (int p = 0; p < lol; p++)
   {

      if (input[p] == '\"')
      {
          boing++;
          if (boing % 2 == 1)
          {
             cout << '\`'<<'\`';
          }
          if (boing % 2 == 0)
          {
              cout << '\''<<'\'';
          }
      }
      else
          cout << input[p];
   }

   cout<<endl;
   system("pause");

   return 0;

}

快乐编码