|
|
问题是这样的,/读入一段文本到vector对象,每个单词存储为vector中的一个元素。
//把vector对象中每个单词转化为大写字母。
//输出vector对象中转化后的元素,每8个单词为一行输出
,作者的答案是这样的
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using namespace std;
int main()
{
vector<string> svec;
string str;
// 读入文本到vector对象
cout << "Enter text(Ctrl+Z to end):" << endl;
while (cin>>str)
svec.push_back(str);
//将vector对象中每个单词转化为大写字母,并输出
if (svec.size() == 0) {
cout << "No string?!" << endl;
return -1;
}
cout << "Transformed elements from the vector:"
<< endl;
for (vector<string>::size_type ix = 0; ix != svec.size(); ++ix) {//ix是svec的下标
for (string::size_type index = 0; index != svec[ix].size(); ++index)
if (islower(svec[ix][index]))
//单词中下标为index的字符为小写字母
svec[ix]= toupper(svec[ix][index]);
cout << svec[ix] << " ";
if ((ix + 1) % 8 == 0)//每8个单词为一行输出
cout << endl;
}
return 0;
}
由于我看过的书不同,概念上有一些问题,对于循环部分的
for (vector<string>::size_type ix = 0; ix != svec.size(); ++ix) {//ix是svec的下标
for (string::size_type index = 0; index != svec[ix].size(); ++index)
if (islower(svec[ix][index]))
svec[ix]= toupper(svec[ix][index]);
为什么要定义成svec[ix][index]呢?
代表着是2维下标?如果我输入4个单词,string对象通过插入(push_back)读取单词,但是实际上下标是对每个字符进行操作,也就是说,svec[ix]代表着单个的字符的输出,而svec[ix][index]代表着对整个单词的获取?index到底意味着什么?
本人是学入很浅,请指点
|
|