如何使用 C++ 字符串将大写辅音替换为相应的小写辅音?
How to replace uppercase consonants with corresponding lowercase ones using c++ string?
我正在解决一个小问题,遇到一个运行时错误,我不知道该错误的根源在哪里。我正在使用一个字符串 word
并通过构建另一个字符串 new_word
将其大写辅音转换为相应的小写辅音。错误出现在 else if
语句中。
错误:C++ 异常:std::out_of_range 在内存位置 0x006FF330。
请帮忙!
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);
请注意,您可以使用在 header <cctype>
中声明的标准 C 函数 tolower
而不是使用像 32 这样的幻数。例如
#include <cctype>
//...
new_word.push_back( std::tolower( ( unsigned char )*i ) );
我正在解决一个小问题,遇到一个运行时错误,我不知道该错误的根源在哪里。我正在使用一个字符串 word
并通过构建另一个字符串 new_word
将其大写辅音转换为相应的小写辅音。错误出现在 else if
语句中。
错误:C++ 异常:std::out_of_range 在内存位置 0x006FF330。
请帮忙!
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);
请注意,您可以使用在 header <cctype>
中声明的标准 C 函数 tolower
而不是使用像 32 这样的幻数。例如
#include <cctype>
//...
new_word.push_back( std::tolower( ( unsigned char )*i ) );