通过char写入字符串数组char

时间:2015-08-11 23:51:04

标签: c++ arrays string

我正在做一个项目,我陷入僵局。我在查明如何用数组中的字符串写字符串char时遇到了麻烦?

我的意思是:

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';

当我编译它错误(字符串子串超出范围)但当我点击中止它工作。这段代码出了什么问题?

4 个答案:

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