C ++从字符串数组中读取

时间:2016-02-11 13:28:56

标签: c++

问题: 如何从作为数组的字符串中提取字符?

说明: 普通字符串

 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”?

5 个答案:

答案 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";

此处strstd::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];