string my_str[10];
我想访问my_str [0]的第一个字符。
我试过这个:
string tokens[10];
(&tokens[0])[0] = 'a';
(&tokens[0])[1] = 's';
(&tokens[0])[2] = 'd';
它的作用类似于令牌[0] =' a',令牌[1] =' s'等
然后我尝试了:string tokens[10];
(&tokens[0])[0][0] = 'a';
(&tokens[0])[0][1] = 's';
(&tokens[0])[0][2] = 'd';
当我编译它错误(字符串子串超出范围)但当我点击中止它工作。这段代码出了什么问题?
答案 0 :(得分:0)
如果要一次向字符串添加字符,可以使用push_back
或+=
运算符。 E.g:
tokens[0] += 'a';
tokens[0] += 's';
tokens[0].push_back('d');
答案 1 :(得分:0)
使用
创建的字符串string tokens[10];
是空的。也就是说,你有10个空string
个。如果你想访问那里的角色,你需要调整它们的大小,例如:
string tokens[10];
for (string& str: tokens) {
str.resize(3);
}
tokens[0][0] = 'a';
tokens[0][1] = 's';
tokens[0][2] = 'd';
使用时,例如,
(&tokens[0])[2] = 'd';
首先获得指向数组中第一个string
的指针,取消引用索引2
,并指定一个从string
转换而来的'd'
,即,string('d')
。也就是说,这个陈述等同于
token[2] = 'd';
答案 2 :(得分:0)
您想要使用string :: at来实现此目的。像这样:
char x;
string s[10];
s[0] = "asdf";
x = s[0].at(0);
printf("%c", x);
打印一个。
答案 3 :(得分:0)
您可以在String类名中使用public member函数:c_str()。 它实际返回返回一个指向数组的指针,该数组包含一个以空字符结尾的字符序列(即一个C字符串),表示字符串对象的当前值:具体来说,它是一个包含字符串对象值的精确等价物。 我们说我们有一个:
string array_of_strings[10];
要访问array_of_strings [0]的第一个字符并打印它只是写:
std::cout << array_of_strings[0].c_str()[0] << endl;