用C++编写函数void transformchar s,该函数将参数s传入的字符(该字符审中可能包合多个以空格分的连续字符,称之为单)中每个单词的首字符改为对应的大写字母,首字符后的字母都政为对应的小写字母,转换后的字符审仍存储在s指向的内存中。在main函教中,从键盘输入字符害,然后调用transform区数,再将转换前、后的整个字符串输出到文件resultxt中,换前的字符审放在第一行,转换后的字符事放在第二行。(说:假定每个单词中间没有符号,即不用考"m之类的情况)例如,若输入字符串:“laM a stUDent!",则输出字符串为:“IAm A Student!",可否给出不同于结果
时间: 2024-02-18 18:03:17 浏览: 49
以下是实现`transform`函数和主函数的代码:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
void transform(char* s) {
bool new_word = true;
for (int i = 0; s[i] != '\0'; i++) {
if (isspace(s[i])) {
new_word = true;
}
else if (new_word) {
s[i] = toupper(s[i]);
new_word = false;
}
else {
s[i] = tolower(s[i]);
}
}
}
int main() {
char str[100];
cout << "请输入字符串:";
cin.getline(str, 100);
transform(str);
cout << "转换后的字符串为:" << str << endl;
ofstream outfile("result.txt");
outfile << "转换前的字符串:" << endl << str << endl;
transform(str);
outfile << "转换后的字符串:" << endl << str << endl;
outfile.close();
cout << "已将转换前、后的字符串写入文件result.txt中" << endl;
return 0;
}
```
这里使用了一个bool变量`new_word`来判断当前字符是否是一个新单词的首字符。如果是空格,则将`new_word`标记为`true`;如果是新单词的首字符,则将该字符转换为大写字母,并将`new_word`标记为`false`;如果不是新单词的首字符,则将该字符转换为小写字母。然后将转换前、后的字符串分别写入文件中。
阅读全文