2012-09-26 62 views
-2

我目前正在研究需要我访问某个字符串的个人部分的内容。我似乎有一个奇怪的错误发生在字符串语法。使用变量访问字符串的内容

这里是我的问题:

说你有一个字符串

string str = "hello"; 

您可以使用str[0]str[1]该字符串访问单个字符。 实施例:

cout << str[0]; 

打印:'h'

然而,使用以下语法,什么也不会被打印。

int i = 0; 

cout << str[i]; 

无论我使用哪种类型的变量,我都会得到相同的结果。谁能帮忙?

+6

后整个代码。 –

+0

根据您提供的示例,这应该工作。看到这个 - http://ideone.com/DTzXz – 0x499602D2

+4

可能是cout的缓冲区没有被刷新。尝试把“cout << str [i] << endl;”。除此之外,我们需要看到更多的代码。 – PherricOxide

回答

-2

字符串是一个C++对象,它不像C中那样存储为字符数组,因此您无法访问其内容部分。它应该被转换为C字符数组来访问它的部分。
试试这个:

cout <<str.c_str()[i]; 
+1

嗯。嗯? str [i]通过str对象触发各种操作符[](size_t i)之一,返回char&或const char&。这不仅是错误的,它在多重假设中是错误的。 – WhozCraig