2 cpp python cpp_python 于 2016.09.12 15:46 提问

这个程序是想将s的第一个词改成大写。请问这里面的index为什么是没定义的?该怎样修改这个程序

#include
#include
#include

using namespace std;

int main()
{
string s("some string");
for (decltype(s.size()) index = 0; index != s.size() && !isspace(s[index]); ++index);
{
s[index] = toupper(s[index]);
}
cout << s << endl;
system("pause");
return 0;
}

4个回答

bdmh
bdmh   Ds   Rxr 2016.09.12 15:54

你在main方法里定义一个index变量

cpp_python
cpp_python 我也知道要定义下,但不知道怎么弄才好,因为通过编译后结果也不对啊。
一年多之前 回复
qq_29594393
qq_29594393   Ds   Rxr 2016.09.12 15:58

这是动态语言写多了,刚跳过来的吧,s是不能修改的
先转成字符型数组,直接判断第一个字符是否为字母,是字母的话ascll码减26,,再将字符数组转为字符串.

qq_27587417
qq_27587417   2016.09.12 17:26

试试这个代码

 #include <iostream>
#include <string>
#include <algorithm> 
using namespace std;
int main()
{
    string s("some string");
    transform(s.begin(),s.end(),s.begin(),toupper);
    cout << s << endl;
    system("pause");
    return 0;
}

cpp_python
cpp_python 结果还是不对啊,两个单词都被大写了。
一年多之前 回复
qq_27587417
qq_27587417   2016.09.17 20:27

那再试试这个吧

 int main()
{
    string s("some string");
    int point=s.find_first_of(" ");//寻找第一个空格键的位置
    transform(s.begin(),s.begin()+point,s.begin(),toupper);
    cout << s << endl;

    system("pause");
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!