📅  最后修改于: 2023-12-03 14:52:15.540000             🧑  作者: Mango
在 C++ 中获取完整的句子可能是一项常见的任务,通常涉及到字符串操作。本文将介绍几种获取完整句子的方法,包括使用 C++ 标准库、正则表达式以及逐个字符扫描等。
C++ 提供了较为便捷的字符串操作功能,可以使用 C++ 标准库中的 string 和 stringstream 类来获取完整的句子。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str = "This is a sentence. This is another sentence.";
stringstream ss(str);
string sentence;
while (getline(ss, sentence, '.'))
{
sentence += ".";
cout << sentence << endl;
}
return 0;
}
上述代码使用 stringstream 类将字符串 str 按照句号 '.' 进行分割,然后逐个输出完整的句子。
使用正则表达式可以更加精准地获取完整的句子。C++ 11 引入了正则表达式库,可以使用
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
string str = "This is a sentence. This is another sentence.";
regex pattern("[^\\.!?]*[\\.!?]"); // 匹配以句号、问号或感叹号结束的句子
smatch result;
while (regex_search(str, result, pattern))
{
cout << result.str() << endl;
str = result.suffix().str(); // 从匹配到的子串之后继续匹配
}
return 0;
}
上述代码使用 regex 类将字符串 str 中满足规则的子串提取出来并输出,然后继续从未匹配部分继续匹配。
逐个字符扫描是一种传统的方法,可以通过判断字符是否是句号、问号或感叹号来获取完整的句子。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "This is a sentence. This is another sentence.";
string sentence;
for (char c : str)
{
sentence += c;
if (c == '.' || c == '?' || c == '!')
{
cout << sentence << endl;
sentence.clear();
}
}
return 0;
}
上述代码逐个字符扫描字符串 str,如果遇到句号、问号或感叹号则输出完整的句子。
以上是几种获取完整句子的方法,可以根据需求选择不同的方法实现。