C++ 函数问题 为什么我的代码不能把空格之后的小写字母转换为大写

#include<iostream>#include<string>usingnamespacestd;voidStrSpaceToHyphen(string&str){... #include <iostream>
#include <string>
using namespace std;

void StrSpaceToHyphen(string& str) {
unsigned int i = 0;

for (i = 0; i < str.length(); ++i) {

if(i == 0){
toupper(str.at(i));
}

if (str.at(i) == ' ') {
toupper(str.at(i+1));
}
}

return;
}

int main() {
string userStr;

cout << "Enter string with spaces: " << endl;
getline(cin, userStr);

StrSpaceToHyphen(userStr);

cout << "String with hyphens: ";
cout << userStr << endl;

return 0;
}
请仔细看我的代码

比如 用户输入 a little boy
我的 目的是 转换为 A Little Boy
但是我目前的代码是 A little boy
我想知道我的代码哪里问题导致 空格之后的字母不能转换为大写。
展开
 我来答
匿名用户
推荐于2016-02-29
展开全部
你的程序根本转不了大小写啊,而且str.at(i+1)这是要溢出的节奏啊。

这是我写的。
#include <iostream>
#include <string>
using namespace std;

void StrSpaceToHyphen(string& str) {
unsigned int i = 0;

for (i = 0; i < str.length(); ++i) {

//if(i == 0)
{
str[i] = toupper(str.at(i));
}

//if (str.at(i) == ) {
// toupper(str.at(i+1));
//}
}

return;
}

int main() {
string userStr;

cout << "Enter string with spaces: " << endl;
getline(cin, userStr);

StrSpaceToHyphen(userStr);

cout << "String with hyphens: ";
cout << userStr << endl;

return 0;
}
One_More_2013
2014-07-17 · TA获得超过682个赞
知道小有建树答主
回答量:1028
采纳率:50%
帮助的人:284万
展开全部
代码修改:
void StrSpaceToHyphen(string& str) {
unsigned int i = 0;

for (i = 0; i < str.length(); ++i)
{
toupper(str.at(i));
}

return;
}
更多追问追答
追问
请仔细看我的代码

比如 用户输入 a little boy
我的 目的是 转换给 A Little Boy
但是我目前的代码是 A little boy
我想知道我的代码哪里问题导致 空格之后的字母不能转换为大写。
追答
现在可以了,代码如下:
void StrSpaceToHyphen(string& str) {
unsigned int i = 0;

for (i = 0; i < str.length(); ++i)
{

str.at(i)=toupper(str.at(i));
}

return;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式