C++ 指向字符串中的单个字符

C++ 指向字符串中的单个字符,c++,string,pointers,C++,String,Pointers,假设我有一个名为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

假设我有一个名为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].
} 
intmain()
{
string foo=“我不想成为c字符串”;
string*bar=&foo//我希望指针栏保持为string类型的指针。

cout您的指针指向整个字符串。您需要使其指向单个字符。以下示例对我有效:

#include <string>
#include <iostream>

int main() 
{
    std::string foo = "I dont want to be a c string";
    char *bar = (char *)foo.c_str();
    std::cout<<*bar; //Prints "I"
    return 0;
} 
#包括
#包括
int main()
{
std::string foo=“我不想成为c字符串”;
char*bar=(char*)foo.c_str();

std::cout要从字符串指针提取字符,不必进行额外的转换

cout << foo[0];

coutstring类有一个特定的成员函数,用于返回字符串的单个字符

这将有助于您:

char*bar=&foo[0];

cout
const char*p=&foo.front()
就是它所说的-一个指向“I”的指针。指向字符的指针并不总是C字符串,所以我想说这绝对不是一个。
bar
是指向字符串的指针。它必须指向字符串对象。它不能指向字符。@chris:指向字符的指针并不总是指向C字符串。第二个指针很重要。说真的,此代码中没有指向C字符串的指针。您试图演示的内容根本无法完成。如果您能告诉我们为什么要这样做,也许有人可以给您一个有意义的替代方案。对于编写foo[0],这是一个非常复杂的解决方法
…并丢弃常量以启动。也没有明显的原因将其丢弃。这是正确的。但这不是我要做的。无论如何,谢谢。这很好,但我需要指针是字符串,而不是字符。