【发布时间】:2010-12-31 05:00:08
【问题描述】:
我想在已经使用 char 数组处理字符串的程序中添加一个新的 (fstream) 函数。 问题是下面的代码会产生字符串,而我能想到的唯一方法是使用一个中间函数,将字符串逐个字符地复制到一个新的字符数组中,然后将它们传递给程序中的函数,取回结果,然后逐个字符地将结果复制回字符串中。
肯定(希望)一定有更好的方法吗?
谢谢!
void translateStream(ifstream &input, ostream& cout) {
string inputStr;
string translated;
getline(input, inputStr, ' ');
while (!input.eof()) {
translateWord(inputStr, translated);
cout << translated;
getline(input, inputStr, ' ');
}
cout << inputStr;
translateWord 函数:
void translateWord(char orig[], char pig[]) {
bool dropCap = false;
int len = strlen(orig)-1;
int firstVowel = findFirstVowel(orig);
char tempStr[len];
strcpy(pig, orig);
if (isdigit(orig[0])) return;
//remember if dropped cap
if (isupper(orig[0])) dropCap = true;
if (firstVowel == -1) {
strcat(pig, "ay");
// return;
}
if (isVowel(orig[0], 0, len)) {
strcat(pig, "way");
// return;
} else {
splitString(pig,tempStr,firstVowel);
strcat(tempStr, pig);
strcat(tempStr, "ay");
strcpy(pig,tempStr);
}
if (dropCap) {
pig[0] = toupper(pig[0]);
}
}
【问题讨论】:
-
了解 translateword() 的作用会有所帮助 - 请至少发布声明。
-
现在添加了 Neil -(它翻译成猪拉丁语)
-
那肯定会以某种非常可怕的方式失败!