我尝试过谷歌搜索并尝试我能想到的一切,但我无法克服这个问题.所以我来到StackOverflow的主人!
我在使用.at()字符串方法时遇到问题:
std::string letters = "QWERTYUIO";
// &(letters.at(0)) now evaluates to QWERTYUIO
// &(letters.at(5)) now evaluates to YUIO
// etc.
Run Code Online (Sandbox Code Playgroud)
我想要的是字符串的第n个字符,而不是从第n个字符开始的字符串.
我尝试了[]运算符,但我现在遇到了一个新问题.代码是当前的(使用Allegro库,但我不认为这会影响这个):
std::string letters = "QWERTYUIO";
char letter;
char StringY[5];
int row = 0;
for(int l = 0; l <= 2; ++l){
letter = letters[row + l];
textout_ex(buffer, font, &letter, l * 30, 20, makecol(255, 255, 255), -1);
sprintf(StringY, "%d", inventoryNum[row + l + 9]);
textout_ex(buffer, font, StringY, l * 30, 20, makecol(255, 255, 255), -1);
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是,字母变量似乎是将上一次迭代的StringY附加到自身,没有明显的原因.这让我疯了.
任何帮助表示赞赏.
非常感谢,
将.
at()返回对字符串中指定字符的引用,因此当您使用其地址时&,您将获得指向该字符(类型char *)的指针.
问题是你将这个指针指向一个需要指向s 数组的char指针的东西.这也有类型,char *所以它的类型检查很好,但它被视为一个字符数组而不是一个字符.
您可能只想放弃&并使用letters.at(5).
有人建议operator[]改用.如果你写的话,它仍然会导致同样的问题&(letters[5]).at()和之间的区别在于operator[]前者确实会检查,而后者则不然.
| 归档时间: |
|
| 查看次数: |
10507 次 |
| 最近记录: |