【发布时间】:2014-04-01 18:29:56
【问题描述】:
假设我有一个名为 foo 的字符串,其值为“我不想成为 c 字符串”,以及一个名为 bar 的字符串指针。
有没有办法让 bar 指向字符串中的大写字母 I 而无需将其转换为 c 字符串?直接指向它只会给 bar 一个值“我不想成为 c 字符串”而不是值“I”,而我尝试过的所有其他操作都只会返回错误。
int main()
{
string foo = "I dont want to be a c string";
string *bar = &foo //I want the pointer bar to stay a pointer of type string.
cout << *bar; //Prints "I dont want to be a c string" when I want it to print "I"
return 0; //I want bar to point to foo[0].
}
目标不是打印出 I,而是将 I 的位置提供给 string 类型的指针,而不必将其转换为 cstring。我什至不确定这是否可能。
【问题讨论】:
-
const char *p = &foo.front();就是它所说的——指向“我”的指针。指向字符的指针并不总是 C 字符串,所以我想说那绝对不是一个。 -
bar是一个指向字符串的指针。它必须指向一个字符串对象。它不能指向一个字符。 -
@chris:指向 char 的指针并不总是指向 c 字符串的指针。第二个指针至关重要。
-
说真的,这段代码中没有指向 C 字符串的指针。
-
您试图展示的内容根本无法完成。如果你能告诉我们为什么你想这样做,也许有人可以给你一个有意义的替代方案。