Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+;中将字符串的元素作为字符调用+; 这是在使用C++和FLTK的GUI中使用的。_C++_String_User Interface_Char - Fatal编程技术网

在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)