问题: 如何从作为数组的字符串中提取字符?
说明: 普通字符串
string example=("Stack Over Flow");
cout<<example[1];
输出将是:
t
我想要的是从字符串数组中提取一个字母示例:
string str[4];
str[0]="1st";
str[1]="2nd";
str[2]="3rd";
str[3]="4th";
cout<<str[2];
将打印
3rd
我怎么能从str[0]
得到“t”?
答案 0 :(得分:6)
只需按照以下步骤操作:
str[0][2]; // third character of first string
更多例子:
string str[4];
str[0]="1st";
str[1]="2nd";
str[2]="3rd";
str[3]="4th";
cout<<str[0][2]<<endl; // t
cout<<str[2][1]<<endl; // r
cout<<str[3][2]<<endl; // h
答案 1 :(得分:1)
std::string str[4];
str[0]="1st";
str[1]="2nd";
str[2]="3rd";
str[3]="4th";
此处str
是std::string
个对象的数组。如您所知,使用operator[]
访问数组的元素。因此,使用str[0]
访问数组中的第一个字符串。
std::string
也提供operator[]
。有了它,您可以访问字符串的字符。
让我们一步一步来。
str - array
str[0] - std::string
str[0][0] - first character of the string str[0]
答案 2 :(得分:0)
你得到't'而不是's'因为你正在打印它cout<<example[1];
你这样做是这样的:
cout<<example[0][2];
答案 3 :(得分:0)
你还需要再打operator[]
次电话。 str[2]
正在使用数组的[]
并返回对索引2处的数组元素的引用。如果要获取第一个数组元素的第二个字符,则需要
str[0][2]
^ ^
string |
character
答案 4 :(得分:0)
类std :: string有自己的重载operator []
,你在第一个代码片段中使用了
string example=("Stack Over Flow");
cout<<example[1];
如果你有一个std::string
类型的对象数组,那么首先你需要使用数组的内置下标operator []
来访问存储在数组中的所需对象,例如
string str[4];
cout << str[1];
在此代码段中,表达式str[1]
返回存储在数组的第二个元素(带索引1)中的字符串。现在,您可以应用类operator []
的重载std::string
,例如
string str[4];
cout << str[1][1];