我怎样才能编写一个读取你的名字和姓氏的C程序,然后将它们转换为大写和小写字母......我知道上下字母如何但dk如何为名字和姓氏做什么sugegstion?...
#include<iostream>
#include<string.h>
using namespace std;
int i;
char s[255];
int main()
{
cin.get(s,255,'\n');
int l=strlen(s);
for(i=0;i<l;i++)
......................................
cout<<s; cin.get();
cin.get();
return 0;
}
答案 0 :(得分:1)
您可以直接在std::string
&#39}中读取名字和姓氏。没有理由自己管理缓冲区或猜测它们应该或应该是什么尺寸。这可以用这样的东西来完成
std::string first, last;
// Read in the first and last name.
std::cin >> first >> last;
您需要根据需要将字符串转换为大写/小写字母。这可以使用C ++标准库中提供的std::toupper
和std::tolower
来完成。只需加入<cctype>
即可。有几种方法可以做到这一点,但一种简单的方法是将整个字符串转换为小写,然后将第一个字符转换为大写。
// set all characters to lowercase
std::transform(str.begin(), str.end(), str.begin(), std::tolower);
// Set the first character to upper case.
str[0] = static_cast<std::string::value_type>(toupper(str[0]));
把这一切放在一起你得到的东西看起来有点像这样
#include <iostream>
#include <string>
#include <cctype>
void capitalize(std::string& str)
{
// only convert if the string is not empty
if (str.size())
{
// set all characters to lowercase
std::transform(str.begin(), str.end(), str.begin(), std::tolower);
// Set the first character to upper case.
str[0] = static_cast<std::string::value_type>(toupper(str[0]));
}
}
int main()
{
std::string first, last;
// Read in the first and last name.
std::cin >> first >> last;
// let's capialize them.
capitalize(first);
capitalize(last);
// Send them to the console!
std::cout << first << " " << last << std::endl;
}
注意:包含using namespace std;
之类的语句被认为是错误形式,因为它会将std
命名空间中的所有内容提取到当前范围内。避免尽可能多。如果您的教授/教师/教师使用它,他们应该受到惩罚,并被迫观看电影“黑客”直到时间结束。
答案 1 :(得分:-1)
由于您使用的是C ++,因此您应该使用std::string
而不是char
数组,而getline()
可以完全按照您的要求使用。
#include <iostream>
#include <string>
int main()
{
std::string first, last;
while (std::getline(cin, first, ' '))
{
std::getline(cin, last);
//Convert to upper, lower, whatever
}
}
如果您只希望每次运行获得一组输入,则可以省略循环。 getline()
的第三个参数是分隔符,它将告诉函数在到达该字符时停止读取。默认情况下为\n
,因此如果您想要阅读剩下的内容,则不需要包含它。