如何使用c ++字符串将大写辅音替换为相应的小写辅音?
How to replace uppercase consonants with corresponding lowercase ones using c++ string?
>我正在解决一个小问题,我遇到了运行时错误,我不知道该错误的来源在哪里。我正在word
一个字符串,并通过构建另一个字符串new_word
将其大写辅音转换为相应的小写辅音。错误出现在else if
语句中。
错误:C++异常:内存位置 0x006FF330 处的 std::out_of_range。
请帮忙!
int main()
{
string word, new_word;
string::iterator i;
cin >> word;
for (i = word.begin(); i < word.end(); i++)
{
if (*i != 'A' && *i != 'a' && *i != 'O' && *i != 'o' && *i != 'Y' && *i != 'y' && *i != 'E' && *i != 'e' && *i != 'U' && *i != 'u' && *i != 'I' && *i != 'i')
{
if (*i > 'a' && *i <= 'z')
{
new_word.push_back('.');
new_word.push_back(*i);
}
else if (*i > 'A' && *i <= 'Z')
{
new_word.push_back(word.at(*i)+32);
}
}
}
cout << new_word;
return 0;
}
看来你的意思
是new_word.push_back( *i +32);
而不是
new_word.push_back(word.at(*i)+32);
请注意,您可以使用在标头<cctype>
中声明的标准 C 函数tolower
而不是像 32 这样的幻数。例如
#include <cctype>
//...
new_word.push_back( std::tolower( ( unsigned char )*i ) );
相关文章:
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 使用基于数组和范围的 For 循环替换一些基本代码行
- 使用迭代器替换映射中的常量项的方法
- 使用 constexpr 替换 #define 和 #ifdef 进行条件编译
- 仅当一个参数中未使用 std::function 时,模板函数替换才有效
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 使用 ctypes 时如何替换 libm?
- 如何使用c ++字符串将大写辅音替换为相应的小写辅音?
- 如何使用regex_replace将子字符串替换为字符串中的另一个子字符串,同时保持整个文本完整?
- 使用 g++ 预处理器进行替换会导致链接错误
- 我是否应该在包含虚拟方法的类上使用'memcpy'?如果没有,如何替换它?
- 我有模板功能.通过使用函数std::for_each,用这个容器中的最大数字替换每个正数
- 使用C++将一个字符串替换为另一个字符串
- 我想仅使用递归将字符"a"替换为字符"z"
- 使用typedef作为一种方便替换类名的方式是一种误用吗
- C++ 使用链接时间替换进行单元测试
- 使用宏替换工厂模式样式 API 中的"create()"函数
- 使用"std::function"和先前推断的模板参数替换失败 - 为什么?
- 如何使用 vim 将文字"n"替换为文字"\n"?
- 替换所有使用不起作用