如何在C ++

时间:2017-04-11 09:44:03

标签: c++

我想计算每个换行符 如果输入如下:

  

嗨月亮这一天我想要帮助

应该是这样的输出:

  

1嗨月亮2这一天我想要3帮助   

我写这段代码:

int main() {
    string str; int c = 0;
    cin >> str;
    int j = 0;
    string t[200];
    while (str != ";")
    {
        t[j] = str;
        cin >> str;

    }
    for (int i = 0; i < j;i++){
    cout << c << " " << t[j];

    if (t[j] == "\n") c++;
}

    system("Pause");
    return 0;
}


我想尝试:

int c[100];
    cin >> str;
    int j = 0;
    string t[200];
    while (str != ";")
    {
        string temp;
        t[j] = str;
        temp = t[j];
        if (temp.find("\n"))
            c[j] += 1;
        cin >> str;

    }
    for (int i = 0; i < j;i++){
    cout << c[i] << " " << t[j];

}

有人能告诉我如何检测字符串输入中的换行符并将其打印出来吗?

2 个答案:

答案 0 :(得分:3)

使用std::getline逐行阅读。加入std::vector。打印矢量索引(加一)和矢量中的字符串。

答案 1 :(得分:0)

我想首先定义新行是什么。在Windows上,它是两个字符\r\n的序列,在UNIX上它只是\n。将新行作为'\ n'处理就足够了,因为你处理文本输入(不是二进制,因为C将处理翻译)。

我建议你将问题分成两个子问题:

  1. 存储一行
  2. 在有更多行的情况下迭代
  3. 我会做这样的事情:

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    char* nextLine(char* input, int* pos) {
      char* temp = new char[200];
      int lpos = 0; // local pos
    
      while(input[*pos] != '\n') {
        temp[lpos++] = input[(*pos)++];
      }
    
      temp[*pos] = '\0';
    
      (*pos)++;
    
      return temp;
    }
    
    int main() {
        char str[] = "hello\nworld!\ntrue";
        int pos = 0;
    
        while(pos < strlen(str)){
            cout << nextLine(str, &pos) << "\n";
        }
    
        return 0;
    }
    

    希望有所帮助!