Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 整句操作的麻烦_C++_Arrays_String_Input_Data Manipulation - Fatal编程技术网

C++ 整句操作的麻烦

C++ 整句操作的麻烦,c++,arrays,string,input,data-manipulation,C++,Arrays,String,Input,Data Manipulation,我正在制作一个pig拉丁语转换器,我可以让它操作一个单词,并需要它转换整个句子,使每个单词以pig拉丁语输出,下面是我的代码: #include <iostream> #include <string> #include <cstring> #include <fstream> using namespace std; bool isVowel (char); string rotate(string); string plString(str

我正在制作一个pig拉丁语转换器,我可以让它操作一个单词,并需要它转换整个句子,使每个单词以pig拉丁语输出,下面是我的代码:

#include <iostream>
#include <string>
#include <cstring>
#include <fstream>

using namespace std;

bool isVowel (char);
string rotate(string);
string plString(string);

int main()
{
string str;
cout <<"Enter a sentence: ";
getline (cin, str);
cout << endl;
cout << str <<" in pig latin - " << plString(str) << endl;

ifstream infile;
infile.open("input.txt");
infile >> str;
while(infile)
{
    cout << plString(str) << " ";
    infile >> str;
}

cout << endl;
}
bool isVowel (char ch)
{
switch (ch)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
    return true;
default:
        return false;
}
}
string rotate(string str)
{
string::size_type len = str.length();
string str1;
str1 = str.substr(1, len - 1) + str[0];
return str1;
}
string plString(string str)
{
string::size_type len;
bool vowel;
string::size_type counter;
if (isVowel (str[0]))
    str = str + "way";
else
{
    str = str + "";
    str = rotate(str);
    len = str.length();
    vowel = false;
    for (counter = 1; counter < len - 1; counter++)
        if (isVowel (str[0]))
        {
            vowel = true;
            break;
        }
        else
            str = rotate(str);
    if(!vowel)
        str = str.substr(1,len) + "way";
    else
        str = str + "ay";
}
return str;
}
#包括
#包括
#包括
#包括
使用名称空间std;
布尔是元音(char);
字符串旋转(字符串);
字符串plString(字符串);
int main()
{
字符串str;

cout您需要将字符串拆分为单词(按空格分隔符拆分)。如果您在
getline
调用后插入字符串,而不是在pig拉丁语中插入
行,可能会有所帮助:

char delimiter = ' ';
string::size_type i = 0;
string::size_type j = str.find(delimiter);

while (j != string::npos) {
    string word = str.substr(i, j-i);
    std::cout << plString(word) << std::endl;
    i = ++j;
    j = str.find(delimiter, j);

    if (j == string::npos) {
        word = str.substr(i, s.length());
        std::cout << plString(word) << std::endl;
    }
 }
char分隔符=“”;
字符串::大小\类型i=0;
字符串::size_type j=str.find(分隔符);
while(j!=string::npos){
字符串字=str.substr(i,j-i);

std::cout the#include仅用于text.txt,当一个句子被输入到text.txt中时,它会进行完美的转换这很有帮助,但它只是将单词分解并重新排列后放入一个垂直列表中,它不会将它们作为一行文本输出。@Stewie9589您可以自定义输出方式,如替换带有空格的
”的
std::endl;