如何解决如何在任何字符串中找到转义序列的数量?
问题:找出任何字符串中出现的“\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
不相关的建议:
-
#include
正是您所需要的。 - 不要
#include<bits/stdc++.h>
- 不要做
using namespace std;
在 C 和 C++ 中,您编写 "string"
表示文字字符串,编写 'c'
表示文字字符。
但并非所有事情都在引号之间有效。你如何表示一个有两行的字符串? C++ 说整个字符串需要在一行上,所以这是无效的:
"line one
line two"
另外,如何表示包含引号的字符串?这也无效:
"Bob says "hello"."
因为第一个字符串以双引号结尾——这是两个字符串,它们之间有一些无效的内容。
为了解决这些问题,该语言允许在字符串或字符中使用转义序列,您可以使用它们来表示无法在其中输入的字符。例如,您可以编写 "line one\nline two"
。 \n
不是两个字符,而是一个。编译器在解释字符串时将其转换为行分隔符。同样,您可以写 '\n'
do 表示 单行 分隔符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。