如何在任何字符串中找到转义序列的数量?

问题描述

问题:找出任何字符串中出现的“\n”(换行符)的数量

Input : String s = "Shroud 是\n 视频游戏社区中的一位神一般的玩家。"

输出:2

这是我的代码

    #include<bits/stdc++.h>
using namespace std;
int main()
{
   ios_base::sync_with_stdio(false);
   cin.tie(NULL);
   int nseq=0;
   string s;
   cin>>s;
   for(int i=0;i<s.length()-1;i++)
   {
       if(s.substr(i,i+1)=="\n")
       {
           nseq++;
       }
   }
   cout<<nseq<<endl;
}

解决方法

扫描字符串直到找到 '/'。然后检查紧随其后的字符是 'n'。在这两种情况下,继续扫描。当心极端情况...

警告:

这是在 OP 更改问题之前写的。有了新的声明,这就更加基本了。

,

我建议使用 std::count

#include <algorithm> // std::count
#include <iostream>  // std::cin,std::cout
#include <string>    // std::string

int main() {
   std::string s = "Shroud is\n a godlike player in\n video gaming community.";
   std::cout << std::count(s.begin(),s.end(),'\n') << '\n';
}

输出

2

不相关的建议:

,

在 C 和 C++ 中,您编写 "string" 表示文字字符串,编写 'c' 表示文字字符。 但并非所有事情都在引号之间有效。你如何表示一个有两行的字符串? C++ 说整个字符串需要在一行上,所以这是无效的:

"line one
line two"

另外,如何表示包含引号的字符串?这也无效:

"Bob says "hello"."

因为第一个字符串以双引号结尾——这是两个字符串,它们之间有一些无效的内容。

为了解决这些问题,该语言允许在字符串或字符中使用转义序列,您可以使用它们来表示无法在其中输入的字符。例如,您可以编写 "line one\nline two"\n 不是两个字符,而是一个。编译器在解释字符串时将其转换为行分隔符。同样,您可以写 '\n' do 表示 单行 分隔符。