Я хочу добавить новую функцию (fstream) в программу, которая уже использует массивы char для обработки строк. Проблема в том, что приведенный ниже код дает строки, и единственный способ, которым я могу думать, что это будет работать, - это иметь промежуточную функцию, которая бы скопировала строки char char в новый массив символов, передала их на функции в программе, вернуть результаты и затем скопировать результат char с помощью char обратно в строку.Может ли getline() использоваться для получения массива символов из 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 FUNC:
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() - пожалуйста, напишите хотя бы декларацию. – 2009-12-30 19:04:03
добавлен сейчас Нил - (он делает перевод на лайнер свиньи) –
Это обязательно провалится очень ужасно! –