在C+;中将字符串的元素作为字符调用+; 这是在使用C++和FLTK的GUI中使用的。
假设我有一个在C+;中将字符串的元素作为字符调用+; 这是在使用C++和FLTK的GUI中使用的。,c++,string,user-interface,char,C++,String,User Interface,Char,假设我有一个字符串x=“ABCDEFG”和一个框数组y[7] 我想使用for循环将其中一个字母作为标签放在盒子上,例如: for (int i=0; i<7; i++) { y[i] = new Fl_Box(120+31*i,40,30,30,"A"); } >(int i=0;i 假设代码> FLYBOX 期望C字符串样式(NULL终止),考虑使用临时值。 std::string(x[i], 1).c_str() 这类似于传球 char temp[2] = { 0 };
字符串x=“ABCDEFG”
和一个框数组y[7]
我想使用for循环将其中一个字母作为标签放在盒子上,例如:
for (int i=0; i<7; i++) {
y[i] = new Fl_Box(120+31*i,40,30,30,"A");
}
<代码> >(int i=0;i 假设代码> FLYBOX 期望C字符串样式(NULL终止),考虑使用临时值。
std::string(x[i], 1).c_str()
这类似于传球
char temp[2] = { 0 };
temp[0] = x[i];
通过
temp
可以使用std::string
的substr()
方法,如下所示:
for (int i=0; i<7; i++) {
y[i] = new Fl_Box(120+31*i,40,30,30, x.substr(i, 1).c_str());
}
下面是一个快速测试程序及其输出
#include <stdio.h>
#include <string>
int main(int argc, char *argv[])
{
std::string x = "ABCDEFG";
for (int i = 0; i < 7; ++i) {
printf("i(%d) c(%s)\n", i, x.substr(i, 1).c_str());
}
return 0;
}
# ./a.out
i(0) c(A)
i(1) c(B)
i(2) c(C)
i(3) c(D)
i(4) c(E)
i(5) c(F)
i(6) c(G)
#包括
#包括
int main(int argc,char*argv[])
{
std::string x=“ABCDEFG”;
对于(int i=0;i<7;++i){
printf(“i(%d)c(%s)\n”,i,x.substr(i,1.c_str());
}
返回0;
}
#/a.out
i(0)c(A)
i(1)c(B)
i(2)c(c)
i(3)c(D)
i(4)c(E)
i(5)c(F)
i(6)c(G)
FL\u Box
将const char*
作为最后一个参数,因此您希望它是x.substr(i,1).c\u str()
。感谢您的回复。这将导致一个“G”对于每个框,因为它传递了一个const char。有办法解决这个问题吗?它在命令行中运行良好,但在Fl_Box中无法正确输出-这就是问题所在。与第一个方法一样,传递temps会导致“G”由于const char,在每个框上都有。我如何解决这个问题?原因不是const char
;这种解释没有意义。您确定没有添加相同的FL\u框实例吗?
#include <stdio.h>
#include <string>
int main(int argc, char *argv[])
{
std::string x = "ABCDEFG";
for (int i = 0; i < 7; ++i) {
printf("i(%d) c(%s)\n", i, x.substr(i, 1).c_str());
}
return 0;
}
# ./a.out
i(0) c(A)
i(1) c(B)
i(2) c(C)
i(3) c(D)
i(4) c(E)
i(5) c(F)
i(6) c(G)