将字母转换成单词
Converting from letter into a word
总的来说,这是分配的一小部分,但这个函数给了我一个错误"调试断言失败!"
void English_to_SMS(void)
{
int i;
bool vowel;
string word;
string letter;
cout << "Enter y, n or m: ";
cin >> word;
for (int i = 0; i <= word.length(); ++i)
{
letter = word[i];
if (letter == "y") {
cout << "yes";
}
else if (letter == "n") {
cout << "no";
}
else if (letter == "m") {
cout << "maybe";
}
else
{
cout << letter ;
}
}
我截取了错误信息的截图:https://i.stack.imgur.com/CGq98.png
错误提示:
调试断言失败!
计划:. .颜色]English.SMS_Translator 调试 English._SMS_Translator.exe文件:e:microsoft visual studio 10.0vcincludexstring Line:1440
表达式:字符串下标超出范围
有关程序如何导致断言失败的信息,
(按重试键调试应用程序)
for (int i = 0; i <= word.length(); ++i)
应该for (int i = 0; i < word.length(); ++i)
n大小的容器下标范围从0到N-1
你的函数中有几个错误。主要的错误是它不清楚该函数的作用:)它要么要求用户只输入一个字符,要么输入一组字符。
类std::string的有效索引范围是[0,length() -1]。所以不用
for (int i = 0; i <= word.length(); ++i)
一定有
for (int i = 0; i < word.length(); ++i)
但是如果你写
就更好了for ( string::size_type i = 0; i < word.length(); ++i )
第二个错误是变量i的声明
void English_to_SMS(void)
{
int i;
没有在函数中使用,因为在for循环中声明了另一个局部变量I,该变量隐藏了前面的声明。所以你可以删除语句
int i;
我也不认为声明std::string类型的对象只保留一个字符有任何意义。所以不用声明
string letter;
我将使用声明
char letter;
例如char letter;
//...
letter = word[i];
if (letter == 'y') {
声明bool vowel;
在函数中也不使用
相关文章:
- 将数字转换为单词
- 使用if-else将数字转换为单词
- 将字节数组 (uint8_t) 转换为单词数组 (uint16_t),反之亦然
- C++入门第5版:单词转换程序
- C++:如果用户输入数字将其转换为单词,并且如果按回车键程序应退出,则使用开关大小写
- QT 创建器只会将第一个单词从文本编辑转换为纯文本
- 如何将 c 字符串转换为指针数组,其中每个指针都是 char 数组中的一个单词
- 是否可以使用 SAPI 忽略Microsoft文本到语音转换中的单词
- 读取数字并转换为单词
- 编写代码将给定的数字转换为单词(例如1234作为输入应输出一千二百三十四)
- C++将包含单词和数字的字符串转换为数字
- 将 3 位数字转换为单词C++
- 切换语句将单词转换为数字?C++
- C++ 将存储为 char* 的 4 个字符的单词转换为 int,反之亦然
- 如何将特定数量的字符转换为大写或小写,并计算单词有多少个大写和小写字母
- C++我如何在文件中阅读,将每个单词转换为小写,然后对每个单词进行cout处理
- 将单词转换为字母的字母顺序值
- 为什么我不能将所有单词转换为大写 C
- 将一个字符串中的所有单词转换为多个字符串c++
- C++将类型字符串变量中的单词转换为小写