C++程序在到达空白时停止翻译文本。 我正在学习CoCDEADMY的学习C++课程,其中一个项目是鲸鱼翻译器,它把文本翻译成鲸鱼的等价物。

C++程序在到达空白时停止翻译文本。 我正在学习CoCDEADMY的学习C++课程,其中一个项目是鲸鱼翻译器,它把文本翻译成鲸鱼的等价物。,c++,C++,将文本翻译成鲸鱼语言有几个简单的规则: 没有辅音。只有不包括字母y的元音。 u和e是超长的,所以我们必须加倍。 问题是,例如,当您输入一个句子时,它在遇到空格后停止翻译,只翻译第一个单词,但如果我声明要翻译的字符串而不是请求用户输入,它就可以正常工作 这是我的密码: #include <iostream> #include <vector> #include <string> int main(){ std::string input; std::

将文本翻译成鲸鱼语言有几个简单的规则:

没有辅音。只有不包括字母y的元音。 u和e是超长的,所以我们必须加倍。 问题是,例如,当您输入一个句子时,它在遇到空格后停止翻译,只翻译第一个单词,但如果我声明要翻译的字符串而不是请求用户输入,它就可以正常工作

这是我的密码:


#include <iostream>
#include <vector>
#include <string>

int main(){
  std::string input;
  std::cout << "Enter the text to translate:\n";
  std::cin >> input;

  std::vector<char> vowels = {'a', 'e', 'i', 'o','u'};
  vowels.push_back('A');
  vowels.push_back('E');
  vowels.push_back('I');
  vowels.push_back('O');
  vowels.push_back('U');
  std::vector<char> punctuation = {'.', ',', '?', '!',':', ';', '(', ')'};
  std::vector<char> result;

  for(int i = 0; i < input.size(); i++){
    //nested loop for vowels
    for(int m = 0; m < vowels.size(); m++){
      //compare input string to vowels vector using if statement
      if(input[i] == vowels[m]){
        result.push_back(input[i]);
      }
    }
    //doubling e's and u's
    if(input[i] == 'e' || input[i] == 'E' || input[i] == 'u' || input[i] == 'U'){
      result.push_back(input[i]);
    }
  }
  //punctuation
  for (int i = 0; i < input.size(); i++){
   for (int k = 0; k < punctuation.size(); k++){
    if (input[i] == punctuation[k]){
      result.push_back(input[i]);
      }
}
}
  for(int j = 0; j < result.size(); j++){
    std::cout << result[j];
  }
  std::cout << "\n";
}
这是因为>>一发现空白就停止阅读。如果您想阅读整行文本,请使用getline

这是因为>>一发现空白就停止阅读。如果您想阅读整行文本,请使用getline


std::cin>>输入;将抓取它能抓取的所有字符,直到它碰到任何空白。您想要std::getlinestd::cin,输入吗?这能回答您的问题吗?当输出令人惊讶时,一个好的第一步是验证输入是否是您假设的输入:std::cout注意,如果这是在线任务,那么通常没有输入数据的输出。您只能打印问题描述中明确说明的内容,因此请输入要翻译的文本:\n可能导致无效答案。@MarekR没有输出,我自己修改了它并将其写入本地ide。std::cin>>输入;将抓取它能抓取的所有字符,直到它碰到任何空白。您想要std::getlinestd::cin,输入吗?这能回答您的问题吗?当输出令人惊讶时,一个好的第一步是验证输入是否是您假设的输入:std::cout注意,如果这是在线任务,那么通常没有输入数据的输出。您只能打印问题描述中明确说明的内容,因此请输入要翻译的文本:\n可能导致无效答案。@MarekR没有输出,我自己修改了它,并将其写在本地ide上。
getline(std::cin, input);