【问题标题】:Point to a single character within a string指向字符串中的单个字符
【发布时间】: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 = &amp;foo.front(); 就是它所说的——指向“我”的指针。指向字符的指针并不总是 C 字符串,所以我想说那绝对不是一个。
  • bar 是一个指向字符串的指针。它必须指向一个字符串对象。它不能指向一个字符。
  • @chris:指向 char 的指针并不总是指向 c 字符串的指针。第二个指针至关重要。
  • 说真的,这段代码中没有指向 C 字符串的指针。
  • 您试图展示的内容根本无法完成。如果你能告诉我们为什么你想这样做,也许有人可以给你一个有意义的替代方案。

标签: c++ string pointers


【解决方案1】:

要从字符串指针中提取字符,您不必进行额外的转换。

cout << foo[0];

【讨论】:

  • 这是正确的。但这不是我想要做的。还是谢谢你。
【解决方案2】:

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

这应该对你有帮助:

char* bar = &foo[0];
cout

【讨论】:

  • 这很好,但我需要指针是字符串,而不是字符。
【解决方案3】:

您的指针指向整个字符串。您需要使其指向单个字符。这个例子对我有用:

#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;
} 

【讨论】:

  • foo[0] 是一个非常复杂的解决方法......
  • 并抛弃 const 来启动。
  • 也无缘无故扔掉它。
猜你喜欢
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2017-07-19
  • 2020-03-23
  • 1970-01-01
  • 2013-04-26
  • 2015-10-10
相关资源
最近更新 更多