2009-11-23 102 views
8

C++:设置字符串

int main() 
    { 
    string a = "a"; 
    ... ... 
    } 

当我在gdb调试:

(GDB)组VAR一个= “OK”
无效投

我跑程序并在字符串a初始化后的暂停点暂停。我试图设定它的价值,但它抱怨无效投射。这是什么适当的语法?

+2

“设置”字符串是gdb不一定支持的复杂操作。 – bmargulies 2009-11-23 00:20:02

+0

好的... 所以你可以使用gdb设置int变量,但不是字符串?我很困惑,因为设置字符串似乎没有比设置整型更复杂,我知道这是有效的: int main() { int b = 9; } (gdb)set var b = 8 //不抱怨 “设置”是我正在尝试做的正确术语,对吧? – anoda9 2009-11-23 00:38:31

+2

“设置字符串似乎没有比设置整型更复杂” - 好吧,它是。 – 2009-11-23 00:39:13

回答

16

你可以这样做:

call a.assign("ok") 

这样,GDB就在于它需要调用一个函数知道(而不是你尝试使用operator=什么),它知道什么函数调用(std::string::assign)并且它根本不需要转换类型(因为assign的重载完全匹配)。