小编Ben*_*son的帖子

使用fprintf打印字符串

我遇到打印字符串的问题,我将其用于调试目的.

我像这样创建字符串:

//checker is int 
std::stringstream buttonx; 
buttonx << "Button" << checker << "_x";
Run Code Online (Sandbox Code Playgroud)

现在我尝试将其打印到我的error.txt文件中


FILE * p;
p = fopen ("error.txt","w");
fprintf(p, "%s" , buttonx.str());
fclose(p);
Run Code Online (Sandbox Code Playgroud)

输出是:

,æ0

它每次都不同.我不确定最新情况是否有人可以解释这个错误?

c++ stl stdio

3
推荐指数
1
解决办法
5768
查看次数

OpenGL纹理倾斜

当我在OpenGL中加载纹理并且GL_ALPHA每个像素(GL_RGB)有一个()或三个组件时,纹理看起来是倾斜的.这是怎么回事?

作为额外的细节,关系宽度/高度似乎会影响.例如,1366x768(683/384)的图像显示为倾斜,而正确映射了1920x1080(16/9)的图像.

倾斜的图像

opengl textures

3
推荐指数
1
解决办法
641
查看次数

如何设置盒装闭合捕获`self`的生命周期?

我想返回一个迭代器(特别是a Filter).我使用了之前的答案,建议返回一个盒装迭代器.问题是我的过滤器捕获self并得到:

错误:闭包可能比当前函数更长,但它借用self了当前函数所拥有的函数

但我认为我是明确的,self有生命'a,所以Box我回来了:

fn occupied_iter_x<'a>(&'a self) -> Box<Iterator<Item=i32> + 'a> {
    Box::new( (0..32).filter( |&pos| match self.at(pos) { Occupied::Empty => false, _ => true } ) )
}
Run Code Online (Sandbox Code Playgroud)

这是为了简化我的第一次尝试,我创建了FooIterator一个以self基本相同的方式拥有引用的new .

如果我使用大多数相同的语法来简单地捕获self作为成员引用它工作正常:

struct Foo { junk: i32 }
struct FooIterator<'a> { foo: &'a Foo }
impl Foo {
    fn foo<'a>(&'a self) -> Box<FooIterator<'a>> {
        Box::new( FooIterator { foo: self } )
    } …
Run Code Online (Sandbox Code Playgroud)

iterator lifetime rust

3
推荐指数
1
解决办法
306
查看次数

是否可以使typedef仅对子类可见?

鉴于:

template <...>
class InheritedByManyClasses
{
public:
    typedef InheritedByManyClasses<...> ParentClass;
};
Run Code Online (Sandbox Code Playgroud)

如果我生一个也是更多课程的父母的孩子,有没有办法将这个想法联系在一起?

template<...>
class ChildInheritedByMany : InheritedByManyClasses<...>
{
public:
    typedef ... ParentClass;  // oops!  now this class can't benefit from parent typedef
};
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我typedef的孩子只能看到它的孩子吗?

c++ templates

2
推荐指数
1
解决办法
220
查看次数

解释这个awk命令

请解释一下这个awk命令的作用:

awk '$0!~/^$/{print $0}'
Run Code Online (Sandbox Code Playgroud)

awk

1
推荐指数
2
解决办法
331
查看次数

strncpy问题(C语言)

我对strncpy有困难.我试图将一个包含8个字符的字符串分成两个字符串(一个子字符串中的前6个字符,然后是另一个字符串中的剩余2个字符).为了说明特殊的困难,我将代码简化为以下内容:

include stdio.h
include stdlib.h
include string.h

define MAXSIZE 100

struct word {  
   char string[8];  
   char sub1[2];  
   char sub2[6];  
};

typedef struct word Word;

int main(void)  
{  
   Word* p;  
   p=(Word*)malloc(MAXSIZE*sizeof(Word));  
   if (p==NULL) {  
      fprintf(stderr,"not enough memory");  
      return 0;  
   }  
   printf("Enter an 8-character string: \n");  
   scanf("%s",p->string);  

   strncpy(p->sub2,p->string,6);  
   strncpy(p->sub1,p->string,2);  
   printf("string=%s\n",p->string);  
   printf("sub1=%s\n",p->sub1);  
   printf("sub2=%s\n",p->sub2);  

   free(p);  

   return 0;  
}
Run Code Online (Sandbox Code Playgroud)

提示用户输入.假设他们输入"12345678".那么程序的输出是:

string=1234567812123456  
sub1=12123456  
sub2=123456
Run Code Online (Sandbox Code Playgroud)

我期待的输出如下:

string=12345678  
sub1=12  
sub2=123456
Run Code Online (Sandbox Code Playgroud)

我不明白strncpy似乎是如何将数字附加到字符串上...显然我不太了解strncpy,但有人可以向我解释发生了什么吗?

c string strncpy

0
推荐指数
1
解决办法
1695
查看次数

标签 统计

c++ ×2

awk ×1

c ×1

iterator ×1

lifetime ×1

opengl ×1

rust ×1

stdio ×1

stl ×1

string ×1

strncpy ×1

templates ×1

textures ×1